クラス: Mongoid::関連付け::参照::HasMany::Enumerable

継承:
オブジェクト
  • オブジェクト
すべて表示
次による拡張機能。
転送可能
次のことが含まれます。
Enumerable
定義:
lib/mongoid/関連付け/referenced/has_many/enumerable.rb

Overview

このクラスは、_loaded ドキュメントの基準または配列である可能性があるターゲットを持つすべての参照された関連付けのラッパーです。 これは両方の場合またはその 2 の組み合わせを処理します。

インスタンス属性の概要を折りたたむ

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

コンストラクターの詳細

#initialize(target, base = nil, association = nil) ⇒ Enumerable

基準または配列のいずれかを使用して、新しい列挙可能な を初期化します。

例:

条件で列挙可能な を初期化します。

Enumberable.new(Post.where(:person_id => id))

列挙可能な を配列で初期化します。

Enumerable.new([ post ])

パラメーター:



262
263
264
265
266
267
268
269
270
271
272
273
274
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 262行

デフォルト 初期化(ターゲット, ベース = nil, 関連付け = nil)
  @_base = ベース
  @_関連付け = 関連付け
  場合 ターゲット.is_a?(条件)
    @_added, @executed, @_loaded, @_unloaded = {}, false, {}, ターゲット
  else
    @_added, @executed = {}, true
    @_loaded = ターゲット.inject({}) 行う |_ target, doc|
      _ target[doc._id] = doc 場合 doc
      _ target
    end
  end
end

インスタンス属性の詳細

# _added =オブジェクト

3 つの主要なインスタンス変数はドキュメントのコレクションです。



21
22
23
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 21行

デフォルト _added
  @_added
end

# _added 追加されたドキュメント。 (追加されたドキュメント) =オブジェクト

3 つの主要なインスタンス変数はドキュメントのコレクションです。



21
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 21行

attr_accessor :_added, :_loaded, :_unloaded

# _loaded =オブジェクト

3 つの主要なインスタンス変数はドキュメントのコレクションです。



21
22
23
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 21行

デフォルト _loaded
  @_loaded
end

# _loaded _loaded された永続化ドキュメント。 (_loaded を含む永続化されたドキュメント。) =オブジェクト

3 つの主要なインスタンス変数はドキュメントのコレクションです。



21
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 21行

attr_accessor :_added, :_loaded, :_unloaded

# _unloaded =オブジェクト

3 つの主要なインスタンス変数はドキュメントのコレクションです。



21
22
23
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 21行

デフォルト _unloaded
  @_unloaded
end

# _unloaded 永続化されたDocsを表す基準。 (Acriteriarepresentationhardsteddocs.) =オブジェクト

3 つの主要なインスタンス変数はドキュメントのコレクションです。



21
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 21行

attr_accessor :_added, :_loaded, :_unloaded

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

Node (ドキュメント)=ドキュメント別名: push

列挙可能にドキュメントを追加します。

例:

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

enumerable << document

パラメーター:

次の値を返します。



60
61
62
63
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 60行

デフォルト <(ドキュメント)
  _added[ドキュメント._id] = ドキュメント
  自己
end

# == (その他) ==(その他) ========= ================================================================== false

列挙可能な が他のオブジェクトと等しいかどうかを確認します。

例:

等価性を確認します。

enumerable == []

パラメーター:

  • その他 (Enumerable)

    その他の列挙可能。

次の値を返します。

  • true | false

    オブジェクトが等しい場合。



33
34
35
36
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 33行

デフォルト ==(その他)
  return false ただし、 その他.respond_to?(:entries)
  エントリ == その他.エントリ
end

# === (その他) ========= =================================================================== false

ケース ステートメントでは、指定されたオブジェクトに対する列挙可能値の等価性を確認します。

例:

大文字と小文字の等価性を確認します。

enumerable === Array

パラメーター:

  • その他 オブジェクト

    チェックするオブジェクト。

次の値を返します。

  • true | false

    オブジェクトが等しい場合。



47
48
49
50
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 47行

デフォルト ===(その他)
  return false ただし、 その他.respond_to?(:entries)
  エントリ === その他.エントリ
end

_loaded? = true | false

列挙可能ファイルは _loaded でしたか。 これは、条件が実行されている場合、または条件全体を手動でロードした場合に当てはまります。

例:

列挙可能な _loaded かどうか

enumerable._loaded?

次の値を返します。

  • true | false

    列挙可能が _loaded になっている場合。



353
354
355
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 353行

デフォルト _loaded?
  !!@executed
end

#任意(*args) = true | false

関連付けにドキュメントがあるかどうかを返します。ドキュメントは、指定されたフィルターに従って任意に作成されます。

このメソッドは、関連付けに永続化されたドキュメントがある場合は true を返し、まだ永続化されていないドキュメントがある場合は true を返します。

関連付けがすでにロードされている場合、このメソッドはロードされたドキュメントを検査し、データベースをクエリしません。 関連付けがロードされていない場合、引数レスおよびブロックレス バージョンは関連付けをロードしません。他のバージョン(列挙可能に委任する)では、完了まで反復処理されるかどうかに応じて、関連付けを完全にロードするかどうかに応じて、関連付けを完全にロードするかどうかが決まります。

このメソッドは パラメーターと ブロックを取ることができます。 パラメーターまたは ブロックのいずれかの動作は、標準ライブラリの 列挙可能モジュールに委任されます。

列挙可能が任意の場合に注意してくださいメソッドがブロックとパターンの両方で呼び出される場合、パターンのみを使用します。

パラメーター:

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

    ドキュメントが満たす必要がある条件。 詳細については、 列挙可能なドキュメント を参照してください。

次の値を返します。

  • true | false

    関連付けにドキュメントがある場合。



225
226
227
228
229
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 225行

デフォルト any?(*args)
  return スーパー 場合 args.any? || ブロック_指定

  !空の場合
end

# as_json (オプション = {}) =ハッシュ

エンコーディングせずに、エントリに #as_json を送信します。

例:

列挙型をJSONとして取得します。

enumerable.as_json

パラメーター:

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

    任意のパラメーター。

次の値を返します。

  • ハッシュ

    エントリはすべてハッシュとして _load されます。



452
453
454
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 452行

デフォルト as_json(options = {})
  エントリ.as_json(options)
end

#クリア=配列 <ドキュメント>

この列挙可能なすべてのドキュメントをクリアします。 ブロックが渡された場合、メモリ内の各ドキュメントに生成されます。

例:

列挙型をクリアします。

enumerable.clear

ブロックを使用して、列挙可能な をクリアします。

enumerable.clear do |doc|
  doc.unbind
end

次の値を返します。



79
80
81
82
83
84
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 79行

デフォルト クリア
  場合 ブロック_指定
    in_memory { |doc| ノードの数(doc) }
  end
  _loaded.クリア および _added.クリア
end

#cloneArray<Document>

注:

これにより、すべてのドキュメントがメモリに読み込まれます。

列挙可能な各ドキュメントを複製します。

例:

列挙可能な を複製します。

enumerable.clone

次の値を返します。



94
95
96
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 94行

デフォルト 複製
  コレクション { |doc| doc.複製 }
end

#delete(document) {|doc| ... } ⇒ Document

指定されたドキュメントを列挙可能から削除します。

例:

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

enumerable.delete(document)

パラメーター:

結果:

  • ドキュメント

次の値を返します。



106
107
108
109
110
111
112
113
114
115
116
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 106行

デフォルト 削除(ドキュメント)
  doc = (_loaded.削除(ドキュメント._id) || _added.削除(ドキュメント._id))
  ただし、 doc
    場合 _unloaded & & _unloaded.WHERE(_id: ドキュメント._id).存在するかどうか
      ノードの数(ドキュメント) 場合 ブロック_指定
      return ドキュメント
    end
  end
  ノードの数(doc) 場合 ブロック_指定
  doc
end

# delete_if (=%) =配列=ドキュメント=

注:

この操作は、 データベースからすべてのドキュメントを読み込みます。

ブロックが true を返す列挙可能なすべてのドキュメントを削除します。

例:

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

enumerable.delete_if do |doc|
  dod._id == _id
end

次の値を返します。



129
130
131
132
133
134
135
136
137
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 129行

デフォルト delete_if(&ブロック)
  load_all)
  delete = in_memory.選択する(&ブロック)
  delete. 行う |doc|
    _loaded.削除(doc._id)
    _added.削除(doc._id)
  end
  自己
end

#= true

この列挙型を反復処理すると、いくつかの異なるシナリオを処理する必要があります。

列挙可能で、基準がメモリに _loaded されている場合、すべての _loaded Docs Docsロックが解除されます。

列挙型に基準の _loaded が ない 場合は、ドキュメントのロード中にカーソルが反復され、次に _added Docsが反復されます。

ブロックが渡されない場合は、すべてのDocsを含む列挙型が返されます。

例:

列挙可能な を反復処理します。

enumerable.each do |doc|
  puts doc
end

すべてのDocsを含む列挙型を返す


a = enumerable.each

次の値を返します。

  • ( true )

    列挙可能が _loaded になったこと。



162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 162行

デフォルト 
  ただし、 ブロック_指定
    return to_enum
  end
  場合 _loaded?
    _loaded.each_pair 行う |id, doc|
      ドキュメント = _added.削除(doc._id) || doc
      set_base(ドキュメント)
      ノードの数(ドキュメント)
    end
  else
    unloaded_documents. 行う |doc|
      ドキュメント = _added.削除(doc._id) || _loaded.削除(doc._id) || doc
      _loaded[ドキュメント._id] = ドキュメント
      set_base(ドキュメント)
      ノードの数(ドキュメント)
    end
  end
  _added.each_pair 行う |id, doc|
    ノードの数(doc)
  end
  @executed = true
end

#= true | false

列挙可能な は空になっていますか。 _loaded かどうかに基づいて、カウントが 0 であるかどうかが判断されます。

例:

列挙可能な は空になっていますか。

enumerable.empty?

次の値を返します。

  • true | false

    列挙可能性が空の場合。



193
194
195
196
197
198
199
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 193行

デフォルト 空の場合
  場合 _loaded?
    in_memory.空の場合
  else
    _added.空の場合 & & !_unloaded.存在するかどうか
  end
end

#first(limit = nil) ⇒ Document

注:

条件に他のソートが定義されていない場合に、_id にソートを自動的に追加すると、パフォーマンスの問題が発生する可能性があります。 最初または最後に使用すると予期しないパフォーマンスが低下する場合は、代わりに 以降を使用してください。 では順序が保証されないことに注意してください。

列挙可能な最初のドキュメントを取得します。 最初に永続化されたドキュメントをチェックします。 列挙可能な全体をロードすることはありません。

例:

最初のドキュメントを取得します。

enumerable.first

パラメーター:

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

    返されるドキュメントの数。

次の値を返します。



246
247
248
249
250
251
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 246行

デフォルト 最初に(limit = nil)
  _loaded.試す(:values).試す(:first) ||
      _added[(ul = _unloaded.試す(:first, limit)).試す(:_id)] ||
      ul ||
      _added.values.試す(:first)
end

#in_memoryArray<Document>

注:

ブロックが渡されると、各ドキュメントに生成されます。

_loaded または _added された列挙可能なすべてのドキュメントを返します。

例:

メモリ内のDocsを取得します。

enumerable.in_memory

次の値を返します。



309
310
311
312
313
314
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 309行

デフォルト in_memory
  docs = (_loaded.values + _added.values)
  docs. 行う |doc|
    ノードの数(doc) 場合 ブロック_指定
  end
end

# を含みますか(doc) = true | false

提供されたドキュメントがターゲットに含まれているかどうか

例:

ターゲットにドキュメントが含まれているかどうか

enumerable.include?(document)

パラメーター:

次の値を返します。

  • true | false

    ドキュメントがターゲット内にある場合。



284
285
286
287
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 284行

デフォルト include?(doc)
  return スーパー ただし、 _unloaded
  _unloaded.WHERE(_id: doc._id).存在するかどうか || _added.has_keys_keys(doc._id)
end

詳しくは、 を 検査しstring ます

検査では、配列スタイルの印刷が必要かどうかのエントリのみが検査されます。

例:

列挙可能を調べます。

enumerable.inspect

次の値を返します。

  • ( string )

    検査された列挙。



296
297
298
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 296行

デフォルト 検査する
  エントリ.検査する
end

#last(limit = nil) ⇒ Document

注:

条件に他のソートが定義されていない場合に、_id にソートを自動的に追加すると、パフォーマンスの問題が発生する可能性があります。 最初または最後に使用すると予期しないパフォーマンスが低下する場合は、代わりに 以降を使用してください。 では順序が保証されないことに注意してください。

列挙可能な最後のドキュメントを取得します。 最初に新しいドキュメントをチェックします。 列挙可能な全体をロードすることはありません。

例:

最後のドキュメントを取得します。

enumerable.last

パラメーター:

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

    返されるドキュメントの数。

次の値を返します。



331
332
333
334
335
336
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 331行

デフォルト last(limit = nil)
  _added.values.試す(:last) ||
      _loaded.試す(:values).試す(:last) ||
      _added[(ul = _unloaded.試す(:last, limit)).試す(:_id)] ||
      ul
end

# mongostat<Object>

列挙可能なプロキシをマーシャリングダンプするのに必要なデータを提供します。

例:

プロキシをダンプします。

Marshal.dump(proxy)

次の値を返します。

  • 配列<Object>

    ダンプされたデータ。



363
364
365
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 363行

デフォルト legacy_dump
  [_added, _loaded, _unloaded, @executed]
end

# mongostal_load (data) = 配列"<Object>

列挙可能なプロキシをマーシャリングロードするのに必要なデータをロードします。

例:

プロキシをロードします。

Marshal.load(proxy)

次の値を返します。

  • 配列<Object>

    ダンプされたデータ。



373
374
375
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 373行

デフォルト legacy_load(データ)
  @_added, @_loaded, @_unloaded, @executed = データ
end

#resetfalse

列挙可能な状態を永続的な状態にリセットします。

例:

列挙可能な値をリセットします。

enumerable.reset

次の値を返します。

  • false

    常に false です。



383
384
385
386
387
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 383行

デフォルト リセット
  _loaded.クリア
  _added.クリア
  @executed = false
end

delete_unloaded (criteria) =オブジェクト

基礎となるロードされていない基準オブジェクトを新しい値でリセットします。 基礎となる配列を同期するために、HATM 関連付けを使用しました。

例:

ロードされていないドキュメントをリセットします。

enumerable.reset_unloaded(criteria)

パラメーター:

  • 条件 基準

    置き換える基準。



396
397
398
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 396行

デフォルト delete_unloaded(条件)
  @_unloaded = 条件 場合 _unloaded.is_a?(条件)
end

response_to? (name, include_private = false) = true | false

この列挙型は指定された メソッドに応答しますか。

例:

列挙可能な は メソッドに応答しますか。

enumerable.respond_to?(:sum)

パラメーター:

  • name ( string | Symbol )

    メソッドの名前。

  • include_private true | false (デフォルトはfalse

    プライベート メソッドを含めるかどうか。

次の値を返します。

  • true | false

    列挙可能が応答するかどうか。



410
411
412
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 410行

デフォルト respond_to?(name, include_private = false)
  [].respond_to?(name, include_private) || スーパー
end

サイズ:整数 またはLengthとも呼ばれます

この列挙型の合計サイズを取得します。 これは、すべての永続化されたドキュメントと非永続化ドキュメントの組み合わせです。

例:

サイズを取得します。

enumerable.size

次の値を返します。

  • (整数)

    列挙可能な のサイズ。



421
422
423
424
425
426
427
428
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 421行

デフォルト サイズ
  count = (_unloaded ? _unloaded.count : _loaded.count)
  場合 count.zero?
    count + _added.count
  else
    count + _added.values.count { |d| d.new_record? }
  end
end

# to_json (オプション = {}) = string

エントリに #to_json を送信します。

例:

列挙型をJSONとして取得します。

enumerable.to_json

パラメーター:

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

    任意のパラメーター。

次の値を返します。

  • ( string )

    エントリはすべて string として _load されます。



440
441
442
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 440行

デフォルト to_json(options = {})
  エントリ.to_json(options)
end

#uniqArray<Document>

注:

この操作は、 データベースからすべてのドキュメントを読み込みます。

列挙可能なすべての一意のドキュメントを返します。

例:

一意のドキュメントをすべて取得します。

enumerable.uniq

次の値を返します。



464
465
466
# ファイル 'lib/mongoid/関連付け/referenced/has_many/enumerable.rb' は、 464行

デフォルト 一意
  エントリ.一意
end