クラス: Mongoid::関連付け::埋め込み::埋め込みMany::Proxy

継承:
  • オブジェクト
すべて表示
次のことが含まれます。
バッチ可能
定義:
build/mongoid- 8.1 /lib/mongoid/asaction/ embedded/ embeddeds_many/proxy.rb

インスタンス属性の概要

プロキシから継承された属性

#_association, #_base, #_target

クラスメソッドの概要を折りたたむ

インスタンス メソッドの概要を折りたたむ

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 、#init 、# klas 、# reset_unloaded#置換可能

マーシャリング可能なに含まれるメソッド

#merger_dump#merger_load

コンストラクターの詳細

#初期化(ベース、ターゲット、関連付け)= Many

新しい embedded_many 関連付けをインスタンス化します。

例:

新しい関連付けを作成します。

Many.new(person, addresses, association)

パラメーター:

  • ベース ドキュメント

    この関連付けがハングするドキュメント。

  • ターゲット 配列 <ドキュメント>

    関連付けの子ドキュメント。

  • 関連付け 関連付け

    関連付けメタデータ



273
274
275
276
277
278
279
280
281
282
283
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/ embedded/ embeddeds_many/proxy.rb '、 行273

デフォルト 初期化(ベース, ターゲット, 関連付け)
  init(ベース, ターゲット, 関連付け) 行う
    _ target.each_with_index 行う |doc, index|
      統合(doc)
      doc._index = index
    end
    update_attributes_hash
    @_unscoped = _ target.dup
    @_ target = scope(_ target)
  end
end

動的メソッド処理

このクラスはメソッド_欠落メソッドを通じて動的メソッドを処理します

#メソッド_欠落 =基準値 |オブジェクト(プライベート)

ターゲット配列が指定されたメソッドに応答しない場合は、クラス上の名前付きスコープまたは基準を見つけて、呼び出しを送信します。

メソッドが配列に存在する場合は、デフォルトのプロキシ動作を使用します。

パラメーター:

  • name シンボル | string

    メソッドの名前。

  • *args オブジェクト...

    メソッド引数。

  • ブロック Proc

    渡す任意のブロック。

次の値を返します。

  • 条件| オブジェクト

    ターゲットからの Criteria または戻り値。



439
440
441
442
443
444
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/ embedded/ embeddeds_many/proxy.rb '、 行439

ruby2_keywords デフォルト メソッド_欠落(name, *args, &ブロック)
  return スーパー 場合 _ target.respond_to?(name)
  klass.送信(:with_scope, 条件) 行う
    条件.public_send(name, *args, &ブロック)
  end
end

クラスメソッドの詳細

埋め込み = true

関連付けが埋め込みである場合は true を返します。 この場合は常に true 。

例:

関連付けは埋め込まれていますか?

Association::Embedded::EmbedsMany.embedded?

次の値を返します。

  • ( true )

    true。



555
556
557
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/ embedded/ embeddeds_many/proxy.rb '、 行555

デフォルト 埋め込み
  true
end

foreign_key_supfix = nil

外部キー フィールドのサフィックス(_id)または "_ids" を返します。

例:

外部キーのサフィックスを取得します。

Association::Embedded::EmbedsMany.foreign_key_suffix

次の値を返します。

  • (nil)

    nil.



565
566
567
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/ embedded/ embeddeds_many/proxy.rb '、 行565

デフォルト foreign_key_supfix
  nil
end

インスタンス メソッドの詳細

# < (*args) =オブジェクト名: push

ドキュメントまたはドキュメントの配列を関連付けに追加します。 プロセス内で親を設定し、インデックスを更新します。

例:

ドキュメントを追加します。

person.addresses << address

ドキュメントをプッシュします。

person.addresses.push(address)

パラメーター:



23
24
25
26
27
28
29
30
31
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/ embedded/ embeddeds_many/proxy.rb '、 行23

デフォルト <(*args)
  docs = args.平面
  return concat(docs) 場合 docs.サイズ > 1
  場合 doc = docs.最初に
    追加(doc)
    doc.保存 場合 永続的かどうか & & !_assigning?
  end
  自己
end

_remove (#document) =オブジェクト

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

コレクション*メモリ内: から 1 つのドキュメントを削除します。 変更は保持されません

パラメーター:



167
168
169
170
171
172
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/ embedded/ embeddeds_many/proxy.rb '、 行167

デフォルト _remove(ドキュメント)
  _ target.delete_one(ドキュメント)
  _unscoped.delete_one(ドキュメント)
  update_attributes_hash
  reindex
end

# as_document = 配列<Hash>

この関連付けを、データベース内のその表現として取得します。

例:

関連付けを属性ハッシュに変換する。

person.addresses.as_document

次の値を返します。

  • <Hash>配列 )

    db に保存されている関連付け。



41
42
43
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/ embedded/ embeddeds_many/proxy.rb '、 行41

デフォルト as_document
  as_attributes.コレクション { |attrs| BSON::ドキュメント.新着情報(attrs) }
end

ビルド番号のビルド(属性 = {}、タイプ = nil) {|doc| ... } =ドキュメント別名: new

関連付け内に新しいドキュメントを構築し、それをターゲットに追加します。 サブクラスを指定する場合は、任意の型を取ります。

例:

関連付けに新しいドキュメントを構築します。

person.people.build(:name => "Bozo")

パラメーター:

  • 属性 ハッシュ (デフォルトは{}です)

    ドキュメントを構築する属性。

  • タイプ クラス (デフォルトはnil

    ドキュメントを構築するための任意のクラス。

結果:

  • ドキュメント

次の値を返します。



69
70
71
72
73
74
75
76
77
78
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/ embedded/ embeddeds_many/proxy.rb '、 行69

デフォルト 構築(属性 = {}, タイプ = nil)
  doc = 工場.execution_Build(タイプ || _関連付け.klass, 属性, execution_colbacks: false)
  追加(doc)
  doc.apply_post_processed_defaults
  ノードの数(doc) 場合 ブロック_指定
  doc.run_pending_shellbacks
  doc.run_colbacks(: build) { doc }
  _base._reset_memoized_descendants.
  doc
end

#クリア=自己

関連付けをクリアします。 ドキュメントがすでに保存されている場合は、 db からドキュメントが削除されます。

ホスト ドキュメントが永続化されていないが、その _id が永続化されたドキュメントと一致する場合、関連付けに対して #client を呼び出すと、アプリケーション内のドキュメントのセット(ホストにロードされる)が次のものとは異なる場合でも、関連付けのドキュメントがデータベースから削除されます。データベース内にある と のいずれの関連付けでも、ホストには永続化されたドキュメントが含まれていない可能性があります。

例:

関連付けをクリアします。

person.addresses.clear

次の値を返します。

  • 自己

    空の関連付け。



96
97
98
99
100
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/ embedded/ embeddeds_many/proxy.rb '、 行96

デフォルト クリア
  batch_client(_ target.dup)
  update_attributes_hash
  自己
end

#concat(docs) ⇒ Array<Document>

ドキュメントの配列を関連付けに追加します。 ドキュメントを 1 つずつ保持するのではなく、バッチ挿入を実行します。

例:

他のドキュメントと連結します。

person.addresses.concat([ address_one, address_two ])

パラメーター:

次の値を返します。



54
55
56
57
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/ embedded/ embeddeds_many/proxy.rb '、 行54

デフォルト concat(docs)
  batch_insert(docs) ただし、 docs.空の場合
  自己
end

#count(*args, &block) ⇒ Integer

データベースに実際に保存された、関連付け内のドキュメントの数を返します。

ドキュメントの合計数が必要な場合は、 #size を使用します。

引数またはブロックが存在する場合、#count はtargetの #count メソッドに委任し、永続化されたドキュメントと非永続ドキュメントの両方を含むようになります。

例:

保存されたドキュメントの数を取得します。

person.addresses.count

ブロックに一致するすべてのドキュメントの数を取得します。

person.addresses.count { |a| a.country == "FR" }

で を使用しますか。 永続化されたドキュメントをカウントするには、ブロック内で実行します。

person.addresses.count { |a| a.persisted? && a.country == "FR" }

パラメーター:

  • *args オブジェクト...

    ターゲットに委任する引数。

次の値を返します。

  • (整数)

    「」でフラグ付けされる、永続化された埋め込みDocsの合計数。 使用して複数のドキュメントを挿入できます。



124
125
126
127
128
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/ embedded/ embeddeds_many/proxy.rb '、 行124

デフォルト count(*args, &ブロック)
  return _ target.count(*args, &ブロック) 場合 args.any? || ブロック

  _ target.選択する { |doc| doc.永続化された場合 }.サイズ
end

# delete (ドキュメント) =ドキュメント| nil別名: delete_one

指定されたドキュメントをターゲットから削除します。 このメソッドは、操作の発生後に配列のインデックスを再インデックス化するためにプロキシされます。

例:

関連付けからドキュメントを削除します。

person.addresses.delete(address)

パラメーター:

次の値を返します。

  • (Document | nil)

    削除されたドキュメント、または削除されていない場合は nil 。



139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/ embedded/ embeddeds_many/proxy.rb '、 行139

デフォルト 削除(ドキュメント)
  execution_colbacks_round(:remove, ドキュメント) 行う
    doc = _ target.delete_one(ドキュメント)
    場合 doc & & !_bining?
      _unscoped.delete_one(doc)
      場合 _assigning?
        _base.add_atomic_pull(doc)
      else
        doc.削除(次を抑制します。 true)
        unbind_one(doc)
      end
      update_attributes_hash
    end
    reindex
    doc
  end
end

# delete_all (条件 = {}) =整数

コールバックを実行せずに、関連付けられているすべてのドキュメントを削除します。

例:

関連付けからすべてのドキュメントを削除します。

person.addresses.delete_all

関連付けからドキュメントを条件付きで削除します。

person.addresses.delete_all({ :street => "Bond" })

パラメーター:

  • 条件 ハッシュ (デフォルトは{}です)

    削除するドキュメントの条件。

次の値を返します。

  • (整数)

    削除されたドキュメントの数。



185
186
187
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/ embedded/ embeddeds_many/proxy.rb '、 行185

デフォルト delete_all(条件 = {})
  delete_all(条件, :delete)
end

# delete_if =多数|列挙型

指定されたブロックが true を返すすべてのドキュメントを削除します。

例:

一致するドキュメントを削除します。

person.addresses.delete_if do |doc|
  doc.state == "GA"
end

次の値を返します。

  • | 列挙

    関連付け。ブロックが提供されていない場合は列挙型。



198
199
200
201
202
203
204
205
206
207
208
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/ embedded/ embeddeds_many/proxy.rb '、 行198

デフォルト delete_if
  場合 ブロック_指定
    dup_ target = _ target.dup
    dup_ target. 行う |doc|
      削除(doc) 場合 ノードの数(doc)
    end
    自己
  else
    スーパー
  end
end

#破棄_all (条件 = {}) =整数

コールバックを実行しながら、関連付けられているすべてのドキュメントを破棄します。

例:

関連付けからすべてのドキュメントを破棄します。

person.addresses.destroy_all

関連付けからドキュメントを条件付きで破棄します。

person.addresses.destroy_all({ :street => "Bond" })

パラメーター:

  • 条件 ハッシュ (デフォルトは{}です)

    破棄するドキュメントの条件。

次の値を返します。

  • (整数)

    破棄されたドキュメントの数。



221
222
223
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/ embedded/ embeddeds_many/proxy.rb '、 行221

デフォルト delete_all(条件 = {})
  delete_all(条件, :破棄)
end

が存在する場合= true | false

この関連付け内のドキュメントがデータベースに存在するかどうかを判断します。

例:

永続化されたドキュメントはありますか?

person.posts.exists?

次の値を返します。

  • true | false

    永続化されたドキュメントが存在する場合は true であり、存在しない場合は false です。



231
232
233
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/ embedded/ embeddeds_many/proxy.rb '、 行231

デフォルト 存在するかどうか
  _ target.any? { |doc| doc.永続化された場合 }
end

#find(*args, &block) ⇒ Document | Array<Document> | nil

いくつかの異なる方法で、この関連付け内のドキュメントを検索します。

このメソッドはMongoid::Criteria#findに委任されます。 このメソッドにブロックが指定されていない場合、指定された _id 値に対して 1 つまたは複数のドキュメントが返されます。

このメソッドにブロックが指定されると、ブロックが真実の値を返す現在の Criteria オブジェクトによって見つかったドキュメントのうちの最初のドキュメントが返されます。

例:

ID でドキュメントを検索します。

person.addresses.find(BSON::ObjectId.new)

複数の ID のドキュメントを検索します。

person.addresses.find([ BSON::ObjectId.new, BSON::ObjectId.new ])

ブロックを使用して、最初に一致するドキュメントを検索します。

person.addresses.find { |addr| addr.state == 'CA' }

パラメーター:

  • *args オブジェクト...

    さまざまな引数。

  • ブロック Proc

    渡す任意のブロック。

次の値を返します。

  • (Document | Array<Document> | nil)

    1 つまたは複数のドキュメント。



259
260
261
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/ embedded/ embeddeds_many/proxy.rb '、 行259

デフォルト find(*args, &ブロック)
  条件.find(*args, &ブロック)
end

#in_memoryArray<Document>

メモリにロードされている関連付け内のすべてのドキュメントを取得します。

例:

メモリ内のドキュメントを取得します。

relation.in_memory

次の値を返します。



291
292
293
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/ embedded/ embeddeds_many/proxy.rb '、 行291

デフォルト in_memory
  _ target
end

#pop (count = nil) =ドキュメント|配列 <ドキュメント>

関連付けからドキュメントを取り出します。 これは単一または複数のドキュメントであり、変更が自動的に保持されます。

例:

単一のドキュメントを作成します。

relation.pop

複数のドキュメントを配置します。

relation.pop(3)

パラメーター:

  • count 整数 (デフォルトはnil

    入力するドキュメントの数。または、指定されていない場合は1 。

次の値を返します。



308
309
310
311
312
313
314
315
316
317
318
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/ embedded/ embeddeds_many/proxy.rb '、 行308

デフォルト ポップ(count = nil)
  場合 count
    場合 docs = _ target[_ target.サイズ - count, _ target.サイズ]
      docs. { |doc| 削除(doc) }
    end
  else
    削除(_ target[-1])
  end.タップ 行う
    update_attributes_hash
  end
end

#シフト(カウント = nil)=ドキュメント|配列 <ドキュメント>

関連付けからドキュメントを移行します。 これは単一または複数のドキュメントであり、変更が自動的に保持されます。

例:

単一のドキュメントをシフトします。

relation.shift

複数のドキュメントをシフトします。

relation.shift(3)

パラメーター:

  • count 整数 (デフォルトはnil

    シフトするドキュメントの数。または、指定されていない場合は1 。

次の値を返します。



333
334
335
336
337
338
339
340
341
342
343
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/ embedded/ embeddeds_many/proxy.rb '、 行333

デフォルト シフト(count = nil)
  場合 count
    場合 _ target.サイズ > 0 & & docs = _ target[0, count]
      docs. { |doc| 削除(doc) }
    end
  else
    削除(_ target[0])
  end.タップ 行う
    update_attributes_hash
  end
end

置換( Docs ) =

関係内の既存のドキュメントを、指定されたターゲット ドキュメントに置き換えます。

例:

関連付けのターゲットを置き換えます。

person.addresses.substitute([ address ])

パラメーター:

  • docs 配列 は Document > | 配列 は )<Hash>

    置換Docs 。

次の値を返します。

  • が多い

    プロキシされた関連付け。



354
355
356
357
358
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/ embedded/ embeddeds_many/proxy.rb '、 行354

デフォルト replacement(docs)
  batch_replace(docs)
  update_attributes_hash
  自己
end

スコープ が設定されていない = Criteria

以前のすべてのスコープが削除された 関連付けを返します。 これは、データベース内のDocsの正確な表現です。

例:

スコープが設定されていないドキュメントを取得します。

person.addresses.unscoped

次の値を返します。

  • 基準

    スコープが設定されていない関連付け。



367
368
369
370
371
372
ファイル 'Build/mongoid- 8.1 /lib/mongoid/asaction/ embedded/ embeddeds_many/proxy.rb '、 行367

デフォルト スコープが設定されていない
  criterion = klass.スコープが設定されていない
  criterion.埋め込み = true
  criterion.ドキュメント = _unscoped.delete_if(&:marked_for_destruction)
  criterion
end