モジュール: Mongoid::関連付け::EagerLoadable
- 次のドキュメントに含まれます。
- コンテキスト::Memory 、コンテキスト::Mongo 、コンテキスト::Mongo::DocumentsLoader
- 定義:
- lib/mongoid/関連付け/EAger_loadable.rb
Overview
このモジュールは、条件の早期ロード動作を定義します。
インスタンス メソッドの概要を折りたたむ
-
#ageage_load ( Docs) = <Mongoid::Document>配列[Mongoid::Document]
指定されたドキュメントの関連付けをロードします。
-
#year_loadable? = true | false
条件に、早期ロードする必要がある関連付けが含まれているかどうかを示します。
-
プリロード(関連付け# Docs )=オブジェクト
指定されたドキュメントの関連付けをロードします。
インスタンス メソッドの詳細
#read_load ( Docs ) = 配列< Mongoid ::Document >
指定されたドキュメントの関連付けをロードします。
25 26 27 28 29 30 31 |
# ファイル 'lib/mongoid/as associated/EAger_loadable.rb' は、 25行 デフォルト Bearer_load(docs) docs.タップ 行う |d| 場合 concern_loadable? プリロード(条件.includes, d) end end end |
#year_loadable? = true | false
条件に、早期ロードする必要がある関連付けが含まれているかどうかを示します。
16 17 18 |
# ファイル 'lib/mongoid/as associated/EAger_loadable.rb' は、 16行 デフォルト concern_loadable? !条件.includes.空の場合 end |
プリロード(関連付け# Docs )=オブジェクト
指定されたドキュメントの関連付けをロードします。 これは再帰的に行われ、指定されたドキュメントの関連ドキュメントの関連付けを読み込みます。
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# ファイル 'lib/mongoid/as associated/EAger_loadable.rb' は、 40行 デフォルト プリロード(関連付け, docs) assoc_map = 関連付け.group_by(&:inverse_Class_name) docs_map = {} queue = [ klass.to_s ] 単一コレクション継承用の アカウント queue.プッシュ(klass.root_Class.to_s) 場合 klass != klass.root_Class 一方 klass = queue.シフト 場合 as = assoc_map.削除(klass) as.各 行う |関連付け| queue < 関連付け.Class_name #このクラスがインクルージョン ツリーにネストされている場合、ドキュメントのみをロードする その上の関連付けでは、#。 親関連付けがない場合は、 このメソッドに渡されたドキュメントのドキュメントを含めます。 ds = docs 場合 関連付け.parent_includes.Length > 0 ds = 関連付け.parent_includes.map{ |p| docs_map[p].to_a }.平面 end レス = 関連付け.関係.Bearer_loader([関連付け], ds).実行する docs_map[関連付け.name] ||= [].to_set docs_map[関連付け.name].merge(レス) end end end end |