クラス: Mongoid::関連付け::参照::HasMany::Proxy
- 次による拡張機能。
- 転送可能、クラスメソッド
- 定義:
- lib/mongoid/関連付け/referenced/has_many/proxy.rb
Overview
has_many の関連付けの対象となるプロキシ。 このクラスのインスタンスは、サブジェクト ドキュメントで 関連付け getter メソッドを呼び出すときに返されます。 このクラスは Mongoid::関連付け::Proxy から継承され、そのメソッドのほとんどを関連付けのターゲット、つまりロードする必要があるドキュメントの配列に転送します。
既知のサブクラスを直接確認
名前空間で定義済み
Modules: クラスメソッド
定数の概要
プロキシから継承された定数
インスタンス属性の概要
プロキシから継承された属性
#_association, #_base, #_target
インスタンス メソッドの概要を折りたたむ
-
# ` `(*args)=Array=Document ===========================================================<Document>
ドキュメントまたはドキュメントの配列を関連付けに追加します。
-
ビルド番号:
属性から新しいドキュメントを作成し、保存せずにこの関連付けに追加します。
-
#concat(documents) ⇒ Array<Document>
ドキュメントの配列を関連付けに追加します。
-
# delete (ドキュメント) = ドキュメント(また: #delete_one)
関連付けからドキュメントを削除します。
-
# delete_all (条件 = nil) = 整数
指定された条件に従って、関連するすべてのドキュメントをデータベースから削除します。
-
# delete_all (条件 = nil) = 整数
指定された条件に従って、関連するすべてのドキュメントをデータベースから破棄します。
-
各# (8 ブロック) = 配列 <Document>
関連付け内の各ドキュメントを反復処理し、指定された ブロックに生成します。
-
が存在する場合(id_or_条件 = :none) = true | false
この関連付け内のドキュメントがデータベースに存在するかどうかを判断します。
-
find (*args){{|Object| ... } = ドキュメント |<Document> Array[Document]| nil
ID または条件のいずれかに基づいて、関連付けで一致するドキュメントを見つけます。
-
初期化(ベース、ターゲット、関連付け)=プロキシ
コンストラクター
新しい references_many の関連付けをインスタンス化します。
-
#nullify =オブジェクト(#nullify_all)
外部キーと参照を削除して、ベース ドキュメントとターゲット ドキュメント間のすべての関連付けを削除し、プロセス内のターゲット ドキュメントを孤立します。
-
複数のパージ(また: のクリア)
関連付けをクリアします。
-
置換(置換)=多数
関連付け内の既存のドキュメントを、指定されたターゲット ドキュメントに置き換えます。
-
スコープが設定されていない = Criteria
デフォルトのスコープが適用されていないドキュメントの基準を取得します。
Classメソッドに含まれるメソッド
多くから継承されたメソッド
#空白? 、 #create 、#create 、 #create 、 #find_or_create_by 、 #find_or_create_by. 、 #find_or_initialize_by 、 #nil? 、 # response_toか。 、 #scoped 、 #serialize_hash
プロキシから継承されたメソッド
apply_ordering 、 #extend_proxies 、 #klas 、 #reset_unloaded 、 #subAtlas
マーシャリング可能なに含まれるメソッド
コンストラクターの詳細
初期化(ベース、ターゲット、関連付け)=プロキシ
新しい references_many の関連付けをインスタンス化します。 逆オブジェクトに外部キーとベースを設定します。
51 52 53 54 55 56 |
# ファイル 'lib/mongoid/関連付け/referenced/has_many/proxy.rb' の検索行は51です。 デフォルト 初期化(ベース, ターゲット, 関連付け) 列挙 = HasMany::Enumerable.新着情報(ターゲット, ベース, 関連付け) スーパー(ベース, 列挙, 関連付け) 行う MongoDB_ENUS_JAJP 場合 klass. & & !klass.定期的か end end |
動的メソッド処理
このクラスはメソッド_欠落メソッドを通じて動的メソッドを処理します
#メソッド_欠落 =基準値 |オブジェクト(プライベート)
ターゲット配列が指定されたメソッドに応答しない場合は、クラス上の名前付きスコープまたは基準を見つけて、呼び出しを送信します。
メソッドが配列に存在する場合は、デフォルトのプロキシ動作を使用します。
TODO: response_to_Missing を使用していることを確認します
anywhere we define method_missing.
rust : を無効化します。
468 469 470 471 472 473 474 475 476 |
# ファイル 'lib/mongoid/関連付け/referenced/has_many/proxy.rb' の検索行は468です。 ruby2_keywords デフォルト メソッド_欠落(name, *args, &ブロック) 場合 _ target.respond_to?(name) _ target.送信(name, *args, &ブロック) else klass.送信(:with_scope, 条件) 行う 条件.public_send(name, *args, &ブロック) end end end |
インスタンス メソッドの詳細
# を プッシュ する
ドキュメントまたはドキュメントの配列を関連付けに追加します。 プロセス内で親を設定し、インデックスを更新します。
73 74 75 76 77 78 79 80 81 82 |
# ファイル 'lib/mongoid/関連付け/referenced/has_many/proxy.rb' の検索行は73です。 デフォルト <(*args) docs = args.平面 return concat(docs) 場合 docs.サイズ > 1 場合 (doc = docs.最初に) 追加(doc) doc.保存 場合 永続的かどうか & & !_assigning? & & !doc.検証されていますか? end 自己 end |
ビルド番号のビルド(属性 = {}、タイプ = nil) =ドキュメント= new
属性から新しいドキュメントを作成し、保存せずにこの関連付けに追加します。
118 119 120 121 122 123 124 125 126 |
# ファイル 'lib/mongoid/関連付け/referenced/has_many/proxy.rb' の検索行は118です。 デフォルト 構築(属性 = {}, タイプ = nil) 工場.execution_Build(タイプ || klass, 属性, execution_colbacks: false).タップ 行う |doc| 追加(doc) doc.apply_post_processed_defaults ノードの数 doc 場合 ブロック_指定 doc.run_pending_shellbacks doc.run_colbacks(: build) { doc } end end |
#concat(documents) ⇒ Array<Document>
ドキュメントの配列を関連付けに追加します。 ドキュメントを 1 つずつ保持するのではなく、バッチ挿入を実行します。
95 96 97 98 99 100 101 102 103 104 105 106 |
# ファイル 'lib/mongoid/関連付け/referenced/has_many/proxy.rb' の検索行は95です。 デフォルト concat(ドキュメント) docs, inserts = [], [] ドキュメント.各 行う |doc| 次へ ただし、 doc 追加(doc) 保存_or_遅延(doc, docs, inserts) 場合 永続的かどうか end exists_Delayed(docs, inserts) 自己 end |
# delete (ドキュメント) =ドキュメント別名: delete_one
関連付けからドキュメントを削除します。 これにより、ドキュメントの外部キーが nil に設定されます。 If the dependent options on the association are :delete_all or :destroy the appropriate removal will occur.
140 141 142 143 144 145 146 147 148 149 150 151 |
# ファイル 'lib/mongoid/関連付け/referenced/has_many/proxy.rb' の検索行は140です。 デフォルト 削除(ドキュメント) execution_colbacks_round(:remove, ドキュメント) 行う 結果 = _ target.削除(ドキュメント) 行う |doc| 場合 doc unbind_one(doc) cascade!(doc) ただし、 _assigning? end end 結果.タップ { delete_unloaded } end end |
# delete_all (条件 = nil) =整数
指定された条件に従って、関連するすべてのドキュメントをデータベースから削除します。
169 170 171 |
# ファイル 'lib/mongoid/関連付け/referenced/has_many/proxy.rb' の検索行は169です。 デフォルト delete_all(条件 = nil) delete_all(条件, :delete_all) end |
# delete_all (条件 = nil) =整数
指定された条件に従って、関連するすべてのドキュメントをデータベースから破棄します。
185 186 187 |
# ファイル 'lib/mongoid/関連付け/referenced/has_many/proxy.rb' の検索行は185です。 デフォルト delete_all(条件 = nil) delete_all(条件, :detry_all) end |
各# ( & ブロック) =配列 <ドキュメント>
これにより、関連付け全体がメモリに読み込まれます。
関連付け内の各ドキュメントを反復処理し、指定された ブロックに生成します。
200 201 202 203 204 205 206 |
# ファイル 'lib/mongoid/関連付け/referenced/has_many/proxy.rb' の検索行は200です。 デフォルト 各(&ブロック) 場合 ブロック _ target.各(&ブロック) else to_enum end end |
が存在する場合(id_or_条件 = :none) = true | false
この関連付け内のドキュメントがデータベースに存在するかどうかを判断します。
関連付けにドキュメントが含まれているが、すべてのドキュメントがアプリケーション内にのみ存在する場合、つまりデータベースに永続化されていない場合、このメソッドは false を返します。
このメソッドは、関連付けがすでにメモリにロードされている場合でも、呼び出しごとにデータベースをクエリします。
230 231 232 |
# ファイル 'lib/mongoid/関連付け/referenced/has_many/proxy.rb' の検索行は230です。 デフォルト 存在するかどうか(id_or_条件 = :none) 条件.存在するかどうか(id_or_条件) end |
#find(*args) {|Object| ... } ⇒ Document | Array<Document> | nil
各引数は、個々の ID、ID の配列、またはネストされた配列にすることができます。 各配列はフラット化されます。
これにより、後の反復処理のために一致するドキュメントがメモリ内に保持されます。
ID または条件のいずれかに基づいて、関連付けで一致するドキュメントを見つけます。
このメソッドはMongoid::Criteria#findに委任されます。 このメソッドにブロックが指定されていない場合、指定された _id 値に対して 1 つまたは複数のドキュメントが返されます。
このメソッドにブロックが指定されると、ブロックが真実の値を返す現在の Criteria オブジェクトによって見つかったドキュメントのうちの最初のドキュメントが返されます。
265 266 267 268 269 |
# ファイル 'lib/mongoid/関連付け/referenced/has_many/proxy.rb' の検索行は265です。 デフォルト find(*args, &ブロック) 一致する = 条件.find(*args, &ブロック) 配列(一致する).各 { |doc| _ target.プッシュ(doc) } 一致する end |
# nullify =オブジェクトとも呼ばれます: nullify_all
外部キーと参照を削除して、ベース ドキュメントとターゲット ドキュメント間のすべての関連付けを削除し、プロセス内のターゲット ドキュメントを孤立します。
277 278 279 280 281 282 283 |
# ファイル 'lib/mongoid/関連付け/referenced/has_many/proxy.rb' の検索行は277です。 デフォルト nullify 条件.update_all(foreign_key => nil) _ target.クリア 行う |doc| unbind_one(doc) doc.Changed_attributes.削除(foreign_key) end end |
複数 の または クリア
関連付けをクリアします。 ドキュメントがすでに保存されている場合は、 db からドキュメントが削除されます。
294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 |
# ファイル 'lib/mongoid/関連付け/referenced/has_many/proxy.rb' の検索行は294です。 デフォルト 消去 return nullify ただし、 _関連付け.破壊的か? after_remove_error = nil 条件.delete_all 多い = _ target.クリア 行う |doc| execution_colback :Before_remove, doc unbind_one(doc) doc.破棄された = true begin execution_colback : after_remove, doc ヘルプ 標準エラー => e after_remove_error = e end end 発生 after_remove_error 場合 after_remove_error 多い end |
置換(置換)=多数
関連付け内の既存のドキュメントを、指定されたターゲット ドキュメントに置き換えます。 新しいターゲットが nil の場合は、必要な削除を実行します。
327 328 329 330 331 332 333 334 335 336 337 338 339 340 |
# ファイル 'lib/mongoid/関連付け/referenced/has_many/proxy.rb' の検索行は327です。 デフォルト replacement(replacement) 場合 replacement new_docs, docs = replacement.compact, [] new_ids = new_docs.map(&:_id) delete_not_in(new_ids) new_docs.各 行う |doc| docs.プッシュ(doc) 場合 doc.送信(foreign_key) != _base.送信(_関連付け.プライマリ_キー) end concat(docs) else 消去 end 自己 end |
スコープ が設定されていない = Criteria
デフォルトのスコープが適用されていないドキュメントの基準を取得します。
349 350 351 |
# ファイル 'lib/mongoid/関連付け/referenced/has_many/proxy.rb' の検索行は349です。 デフォルト スコープが設定されていない klass.スコープが設定されていない.WHERE(foreign_key => _base.送信(_関連付け.プライマリ_キー)) end |