クラス: Mongoid::関連付け::埋め込み::埋め込みMany::Proxy
- 次による拡張機能。
- 転送可能、クラスメソッド
- 次のことが含まれます。
- バッチ可能
- 定義:
- lib/mongoid/関連付け/ embedded/ embedded/ embeddeds_many/proxy.rb
Overview
embeddeds_many 関連付け用の Transparent プロキシ。 このクラスのインスタンスは、親ドキュメントで関連付け getter メソッドを呼び出すと返されます。 このクラスは Mongoid::関連付け::Proxy から継承し、そのメソッドのほとんどを関連付けのターゲット、つまり子ドキュメントの配列に転送します。
名前空間で定義済み
Modules: クラスメソッド
インスタンス メソッドの概要を折りたたむ
-
#オブジェクト(また: #push)
ドキュメントまたはドキュメントの配列を関連付けに追加します。
-
_remove (#document) = オブジェクト
private
メモリ内のコレクションから1 つのdocumentのみを削除します。
-
# 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
この関連付け内のドキュメントがデータベースに存在するかどうかを判断します。
-
#初期化(ベース、ターゲット、関連付け)=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
位置から含まれるメソッド
多くから継承されたメソッド
#空白?、#cache_version、#create、#create!、#find_or_create_by、#find_or_create_by!、#find_or_initialize_by、#nil?、#respond_to?、#scoped、#serialize_hash
コンストラクターの詳細
#初期化(ベース、ターゲット、関連付け)= Many
新しい embedded_many 関連付けをインスタンス化します。
70 71 72 73 74 75 76 77 78 79 80 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行70 デフォルト 初期化(ベース, ターゲット, 関連付け) スーパー 行う _ 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 を使用していることを確認します。rust : を無効化します。
525 526 527 528 529 530 531 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行525 ruby2_keywords デフォルト メソッド_欠落(name, *args, &ブロック) return スーパー 場合 _ target.respond_to?(name) klass.送信(:with_scope, 条件) 行う 条件.public_send(name, *args, &ブロック) end end |
インスタンス メソッドの詳細
# < (*args) =オブジェクト名: push
ドキュメントまたはドキュメントの配列を関連付けに追加します。 プロセス内で親を設定し、インデックスを更新します。
92 93 94 95 96 97 98 99 100 101 102 103 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行92 デフォルト <(*args) docs = args.平面 return ただし、 docs.any? return concat(docs) 場合 docs.サイズ > 1 docs.最初に.タップ 行う |doc| 追加(doc) doc.保存 場合 永続的かどうか & & !_assigning? end 自己 end |
_remove (#document) =オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
メモリ内のコレクションから1 つのdocumentのみを削除します。変更は保持されません。
239 240 241 242 243 244 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行239 デフォルト _remove(ドキュメント) _ target.delete_one(ドキュメント) _unscoped.delete_one(ドキュメント) update_attributes_hash reindex end |
# as_document = 配列<Hash>
この関連付けを、データベース内のその表現として取得します。
113 114 115 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行113 デフォルト as_document as_attributes.コレクション { |attrs| BSON::ドキュメント.新着情報(attrs) } end |
ビルド番号のビルド(属性 = {}、タイプ = nil) =ドキュメント= new
関連付け内に新しいドキュメントを構築し、それをターゲットに追加します。 サブクラスを指定する場合は、任意の型を取ります。
141 142 143 144 145 146 147 148 149 150 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行141 デフォルト 構築(属性 = {}, タイプ = 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 からドキュメントが削除されます。
ホストdocumentが永続化されていないが、その _id が永続化されたdocumentと一致する場合、関連付けに対して #client を呼び出すと、アプリケーション内のdocumentのセット(ホストにロードされる)が次のものとは異なる場合でも、関連付けのdocumentがデータベースから削除されます。データベース内、および ホストにはいずれかの関連付けに永続化されたdocumentが含まれていない場合があります。
168 169 170 171 172 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行168 デフォルト クリア batch_client(_ target.dup) update_attributes_hash 自己 end |
#concat(docs) ⇒ Array<Document>
ドキュメントの配列を関連付けに追加します。 ドキュメントを 1 つずつ保持するのではなく、バッチ挿入を実行します。
126 127 128 129 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行126 デフォルト concat(docs) batch_insert(docs) ただし、 docs.空の場合 自己 end |
#count(*args, &block) ⇒ Integer
データベースに実際に保存された、関連付け内のドキュメントの数を返します。
ドキュメントの合計数が必要な場合は、 #size を使用します。
引数またはブロックが存在する場合、#count はtargetの #count メソッドに委任し、永続化されたドキュメントと非永続ドキュメントの両方を含むようになります。
196 197 198 199 200 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行196 デフォルト count(*args, &ブロック) return _ target.count(*args, &ブロック) 場合 args.any? || ブロック _ target.count(&: 永続的か) end |
# delete (ドキュメント) =ドキュメント| nil別名: delete_one
指定されたドキュメントをターゲットから削除します。 このメソッドは、操作の発生後に配列のインデックスを再インデックス化するためにプロキシされます。
211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行211 デフォルト 削除(ドキュメント) 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 (条件 = {}) =整数
コールバックを実行せずに、関連付けられているすべてのドキュメントを削除します。
257 258 259 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行257 デフォルト delete_all(条件 = {}) delete_all(条件, :delete) end |
delete_if ~ 埋め込みMany::Proxy |列挙型
指定されたブロックが true を返すすべてのドキュメントを削除します。
270 271 272 273 274 275 276 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行270 デフォルト delete_if return スーパー ただし、 ブロック_指定 _ target.dup.各 { |doc| 削除(doc) 場合 ノードの数 doc } 自己 end |
#破棄_all (条件 = {}) =整数
コールバックを実行しながら、関連付けられているすべてのドキュメントを破棄します。
289 290 291 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行289 デフォルト delete_all(条件 = {}) delete_all(条件, :破棄) end |
が存在する場合(id_or_条件 = :none) = true | false
この関連付け内のドキュメントがデータベースに存在するかどうかを判断します。
309 310 311 312 313 314 315 316 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行309 デフォルト 存在するかどうか(id_or_条件 = :none) ケース id_or_条件 次の場合: :none 次に _ target.any?(&: 永続的か) 次の場合: nil, false 次に false 次の場合: ハッシュ 次に WHERE(id_or_条件).any?(&: 永続的か) else WHERE(_id: id_or_条件).any?(&: 永続的か) end end |
#pop(count = nil) ⇒ Document | Array<Document> | nil
関連付けからドキュメントを取り出します。 これは単一または複数のドキュメントであり、変更が自動的に保持されます。
339 340 341 342 343 344 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行339 デフォルト ポップ(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
関連付けからドキュメントを移行します。 これは単一または複数のドキュメントであり、変更が自動的に保持されます。
359 360 361 362 363 364 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行359 デフォルト シフト(count = nil) return [] 場合 count&.zero? docs = _ target.最初に(count || 1).各 { |doc| 削除(doc) } (count.nil? || docs.空の場合) ? docs.最初に : docs end |
置換( Docs ) =多
関係内の既存のドキュメントを、指定されたターゲット ドキュメントに置き換えます。
375 376 377 378 379 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行375 デフォルト replacement(docs) batch_replace(docs) update_attributes_hash 自己 end |
スコープ が設定されていない = Criteria
以前のすべてのスコープが削除された 関連付けを返します。 これは、データベース内のDocsの正確な表現です。
388 389 390 391 392 393 |
# ファイル 'lib/mongoid/関連付け/埋め込み/埋め込み_many/proxy.rb' 行388 デフォルト スコープが設定されていない criterion = klass.スコープが設定されていない criterion. = true criterion.ドキュメント = _unscoped.delete_if(&:marked_for_destruction) criterion end |