クラス: Mongoid::関連付け::埋め込み::埋め込みMany::Proxy
- 次による拡張機能。
- クラスメソッド
- 次のことが含まれます。
- バッチ可能
- 定義:
- lib/mongoid/関連付け/ embedded/ embedded/ embeddeds_many/proxy.rb
Overview
embeddeds_many 関連付け用の Transparent プロキシ。 このクラスのインスタンスは、親ドキュメントで関連付け getter メソッドを呼び出すと返されます。 このクラスは Mongoid::関連付け::Proxy から継承し、そのメソッドのほとんどを関連付けのターゲット、つまり子ドキュメントの配列に転送します。
名前空間で定義済み
Modules: クラスメソッド
定数の概要
プロキシから継承された定数
インスタンス属性の概要
プロキシから継承された属性
#_association, #_base, #_target
インスタンス メソッドの概要を折りたたむ
-
#オブジェクト(また: #push)
ドキュメントまたはドキュメントの配列を関連付けに追加します。
-
_remove (#document) = オブジェクト
private
コレクション*メモリ内: から 1 つのドキュメントを削除します。
-
# as_document = 配列<Hash>
この関連付けを、データベース内のその表現として取得します。
-
ビルド番号:
関連付け内に新しいドキュメントを構築し、それをターゲットに追加します。
-
#クリア= 自己
関連付けをクリアします。
-
#concat(docs) ⇒ Array<Document>
ドキュメントの配列を関連付けに追加します。
-
#count(*args, &block) ⇒ Integer
データベースに実際に保存された、関連付け内のドキュメントの数を返します。
-
# delete (ドキュメント) = ドキュメント | nil (#delete_one)
指定されたドキュメントをターゲットから削除します。
-
# delete_all (条件 = {}) = 整数
コールバックを実行せずに、関連付けられているすべてのドキュメントを削除します。
-
delete_if ~ 埋め込みMany::Proxy |列挙型
指定されたブロックが true を返すすべてのドキュメントを削除します。
-
#破棄_all (条件 = {}) = 整数
コールバックを実行しながら、関連付けられているすべてのドキュメントを破棄します。
-
が存在する場合(id_or_条件 = :none) = true | false
この関連付け内のドキュメントがデータベースに存在するかどうかを判断します。
-
#find {|Object| ... } ⇒ Document | Array<Document> | nil
いくつかの異なる方法で、この関連付け内のドキュメントを検索します。
-
#初期化(ベース、ターゲット、関連付け)=Many
コンストラクター
新しい embedded_many 関連付けをインスタンス化します。
-
#pop (count = nil) = ドキュメント | Array[Document]|<Document> nil
関連付けからドキュメントを取り出します。
-
# シフト (カウント = nil)= ドキュメント | Array[Document]|<Document> nil
関連付けからドキュメントを移行します。
-
置換( Docs ) = 多
関係内の既存のドキュメントを、指定されたターゲット ドキュメントに置き換えます。
-
スコープが設定されていない = Criteria
以前のすべてのスコープが削除された 関連付けを返します。
Classメソッドに含まれるメソッド
fast_loader 、埋め込み、 foreign_key_supfix
Batchableに含まれるメソッド
#batch_client 、 #batch_insert 、 #batch_remove 、 #batch_replace
位置から含まれるメソッド
多くから継承されたメソッド
#空白? 、 #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
マーシャリング可能なに含まれるメソッド
コンストラクターの詳細
#初期化(ベース、ターゲット、関連付け)= Many
新しい embedded_many 関連付けをインスタンス化します。
67 68 69 70 71 72 73 74 75 76 77 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行67 デフォルト 初期化(ベース, ターゲット, 関連付け) スーパー 行う _ target.each_with_index 行う |doc, index| 統合(doc) doc._index = index end update_attributes_hash @_unscoped = _ target.dup @_ target = scope(_ target) end end |
動的メソッド処理
このクラスはメソッド_欠落メソッドを通じて動的メソッドを処理します
#メソッド_欠落 =基準値 |オブジェクト(プライベート)
ターゲット配列が指定されたメソッドに応答しない場合は、クラス上の名前付きスコープまたは基準を見つけて、呼び出しを送信します。
メソッドが配列に存在する場合は、デフォルトのプロキシ動作を使用します。
TODO: response_to_Missing を使用していることを確認します
anywhere we define method_missing.
rust : を無効化します。
490 491 492 493 494 495 496 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行490 ruby2_keywords デフォルト メソッド_欠落(name, *args, &ブロック) return スーパー 場合 _ target.respond_to?(name) klass.送信(:with_scope, 条件) 行う 条件.public_send(name, *args, &ブロック) end end |
インスタンス メソッドの詳細
# < (*args) =オブジェクト名: push
ドキュメントまたはドキュメントの配列を関連付けに追加します。 プロセス内で親を設定し、インデックスを更新します。
89 90 91 92 93 94 95 96 97 98 99 100 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行89 デフォルト <(*args) docs = args.平面 return ただし、 docs.any? return concat(docs) 場合 docs.サイズ > 1 docs.最初に.タップ 行う |doc| 追加(doc) doc.保存 場合 永続的かどうか & & !_assigning? end 自己 end |
_remove (#document) =オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
コレクション*メモリ内: から 1 つのドキュメントを削除します。 変更は保持されません。
236 237 238 239 240 241 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行236 デフォルト _remove(ドキュメント) _ target.delete_one(ドキュメント) _unscoped.delete_one(ドキュメント) update_attributes_hash reindex end |
# as_document = 配列<Hash>
この関連付けを、データベース内のその表現として取得します。
110 111 112 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行110 デフォルト as_document as_attributes.コレクション { |attrs| BSON::ドキュメント.新着情報(attrs) } end |
ビルド番号のビルド(属性 = {}、タイプ = nil) =ドキュメント= new
関連付け内に新しいドキュメントを構築し、それをターゲットに追加します。 サブクラスを指定する場合は、任意の型を取ります。
138 139 140 141 142 143 144 145 146 147 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行138 デフォルト 構築(属性 = {}, タイプ = nil) 工場.execution_Build(タイプ || _関連付け.klass, 属性, execution_colbacks: false).タップ 行う |doc| 追加(doc) doc.apply_post_processed_defaults ノードの数 doc 場合 ブロック_指定 doc.run_pending_shellbacks doc.run_colbacks(: build) { doc } _base._reset_memoized_descendants. end end |
#クリア=自己
関連付けをクリアします。 ドキュメントがすでに保存されている場合は、 db からドキュメントが削除されます。
ホスト ドキュメントが永続化されていないが、その _id が永続化されたドキュメントと一致する場合、関連付けに対して #client を呼び出すと、アプリケーション内のドキュメントのセット(ホストにロードされる)が次のものとは異なる場合でも、関連付けのドキュメントがデータベースから削除されます。データベース内にある と のいずれの関連付けでも、ホストには永続化されたドキュメントが含まれていない可能性があります。
165 166 167 168 169 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行165 デフォルト クリア batch_client(_ target.dup) update_attributes_hash 自己 end |
#concat(docs) ⇒ Array<Document>
ドキュメントの配列を関連付けに追加します。 ドキュメントを 1 つずつ保持するのではなく、バッチ挿入を実行します。
123 124 125 126 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行123 デフォルト concat(docs) batch_insert(docs) ただし、 docs.空の場合 自己 end |
#count(*args, &block) ⇒ Integer
データベースに実際に保存された、関連付け内のドキュメントの数を返します。
ドキュメントの合計数が必要な場合は、 #size を使用します。
引数またはブロックが存在する場合、#count はtarget
の #count メソッドに委任し、永続化されたドキュメントと非永続ドキュメントの両方を含むようになります。
193 194 195 196 197 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行193 デフォルト count(*args, &ブロック) return _ target.count(*args, &ブロック) 場合 args.any? || ブロック _ target.count(&: 永続的か) end |
# delete (ドキュメント) =ドキュメント| nil別名: delete_one
指定されたドキュメントをターゲットから削除します。 このメソッドは、操作の発生後に配列のインデックスを再インデックス化するためにプロキシされます。
208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行208 デフォルト 削除(ドキュメント) execution_colbacks_round(:remove, ドキュメント) 行う _ target.delete_one(ドキュメント).タップ 行う |doc| 場合 doc & & !_bining? _unscoped.delete_one(doc) 場合 _assigning? _base.add_atomic_pull(doc) else doc.削除(次を抑制します。 true) unbind_one(doc) end update_attributes_hash end reindex end end end |
# delete_all (条件 = {}) =整数
コールバックを実行せずに、関連付けられているすべてのドキュメントを削除します。
254 255 256 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行254 デフォルト delete_all(条件 = {}) delete_all(条件, :delete) end |
delete_if ~ 埋め込みMany::Proxy |列挙型
指定されたブロックが true を返すすべてのドキュメントを削除します。
267 268 269 270 271 272 273 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行267 デフォルト delete_if return スーパー ただし、 ブロック_指定 _ target.dup.各 { |doc| 削除(doc) 場合 ノードの数 doc } 自己 end |
#破棄_all (条件 = {}) =整数
コールバックを実行しながら、関連付けられているすべてのドキュメントを破棄します。
286 287 288 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行286 デフォルト delete_all(条件 = {}) delete_all(条件, :破棄) end |
が存在する場合(id_or_条件 = :none) = true | false
この関連付け内のドキュメントがデータベースに存在するかどうかを判断します。
306 307 308 309 310 311 312 313 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行306 デフォルト 存在するかどうか(id_or_条件 = :none) ケース id_or_条件 次の場合: :none 次に _ target.any?(&: 永続的か) 次の場合: nil, false 次に false 次の場合: ハッシュ 次に WHERE(id_or_条件).any?(&: 永続的か) else WHERE(_id: id_or_条件).any?(&: 永続的か) end end |
#find {|Object| ... } ⇒ Document | Array<Document> | nil
いくつかの異なる方法で、この関連付け内のドキュメントを検索します。
このメソッドはMongoid::Criteria#findに委任されます。 このメソッドにブロックが指定されていない場合、指定された _id 値に対して 1 つまたは複数のドキュメントが返されます。
このメソッドにブロックが指定されると、ブロックが真実の値を返す現在の Criteria オブジェクトによって見つかったドキュメントのうちの最初のドキュメントが返されます。
340 341 342 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行340 デフォルト find(...) 条件.find(...) end |
#pop(count = nil) ⇒ Document | Array<Document> | nil
関連付けからドキュメントを取り出します。 これは単一または複数のドキュメントであり、変更が自動的に保持されます。
365 366 367 368 369 370 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行365 デフォルト ポップ(count = nil) return [] 場合 count&.zero? docs = _ target.last(count || 1).各 { |doc| 削除(doc) } (count.nil? || docs.空の場合) ? docs.最初に : docs end |
#shift(count = nil) ⇒ Document | Array<Document> | nil
関連付けからドキュメントを移行します。 これは単一または複数のドキュメントであり、変更が自動的に保持されます。
385 386 387 388 389 390 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行385 デフォルト シフト(count = nil) return [] 場合 count&.zero? docs = _ target.最初に(count || 1).各 { |doc| 削除(doc) } (count.nil? || docs.空の場合) ? docs.最初に : docs end |
置換( Docs ) =多
関係内の既存のドキュメントを、指定されたターゲット ドキュメントに置き換えます。
401 402 403 404 405 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行401 デフォルト replacement(docs) batch_replace(docs) update_attributes_hash 自己 end |
スコープ が設定されていない = Criteria
以前のすべてのスコープが削除された 関連付けを返します。 これは、データベース内のDocsの正確な表現です。
414 415 416 417 418 419 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行414 デフォルト スコープが設定されていない criterion = klass.スコープが設定されていない criterion. = true criterion.ドキュメント = _unscoped.delete_if(&:marked_for_destruction) criterion end |