module Mongoid::Relations::Eager
Public Instance Methods
eager_load(docs)
click to toggle source
# File lib/mongoid/relations/eager.rb, line 15 def eager_load(docs) docs.tap do |d| if eager_loadable? preload(criteria.inclusions, d) end end end
eager_loadable?()
click to toggle source
# File lib/mongoid/relations/eager.rb, line 11 def eager_loadable? !criteria.inclusions.empty? end
preload(relations, docs)
click to toggle source
# File lib/mongoid/relations/eager.rb, line 23 def preload(relations, docs) grouped_relations = relations.group_by do |metadata| metadata.inverse_class_name end grouped_relations.keys.each do |_klass| grouped_relations[_klass] = grouped_relations[_klass].group_by do |metadata| metadata.relation end end grouped_relations.each do |_klass, associations| docs = associations.collect do |_relation, association| _relation.eager_load_klass.new(association, docs).run end.flatten end end