モジュール: Mongoid::関連付け::EagerLoadable

次のドキュメントに含まれます。
コンテキスト::Memoryコンテキスト::Mongoコンテキスト::Mongo::DocumentsLoader
定義:
lib/mongoid/関連付け/EAger_loadable.rb

Overview

このモジュールは、条件の早期ロード動作を定義します。

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

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

#read_load ( Docs ) = 配列< Mongoid ::Document >

指定されたドキュメントの関連付けをロードします。

パラメーター:

  • docs 配列未満Mongoid >

    ドキュメント。

次の値を返します。

  • 配列未満Mongoid >

    指定されたドキュメント。



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

条件に、早期ロードする必要がある関連付けが含まれているかどうかを示します。

次の値を返します。

  • 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
# ファイル 'lib/mongoid/as associated/EAger_loadable.rb' は、 40行

デフォルト プリロード(関連付け, docs)
  assoc_map = 関連付け.group_by(&:inverse_Class_name)
  docs_map = {}
  queue = [ klass.to_s ]

  一方 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