module Mongoid::Relations::Eager

Attributes

eager_loaded[RW]

Public Instance Methods

eager_load(docs) click to toggle source
# File lib/mongoid/relations/eager.rb, line 29
def eager_load(docs)
  return false unless eager_loadable?
  preload(criteria.inclusions, docs)
  self.eager_loaded = true
end
eager_load_one(doc) click to toggle source
# File lib/mongoid/relations/eager.rb, line 20
def eager_load_one(doc)
  eager_load([doc])
end
eager_loadable?(document = nil) click to toggle source
# File lib/mongoid/relations/eager.rb, line 24
def eager_loadable?(document = nil)
  return false if criteria.inclusions.empty?
  !eager_loaded
end
preload(relations, docs) click to toggle source
# File lib/mongoid/relations/eager.rb, line 35
def preload(relations, docs)

  relations.group_by do |metadata|
    metadata.relation
  end.each do |relation, associations|
    relation.eager_load_klass.new(associations, docs).run
  end
end
with_eager_loading(document) click to toggle source
# File lib/mongoid/relations/eager.rb, line 13
def with_eager_loading(document)
  return nil unless document
  doc = Factory.from_db(klass, document, criteria.options[:fields])
  eager_load_one(doc)
  doc
end