module Mongoload::RelationLoader

Public Instance Methods

auto_include?(doc, metadata) click to toggle source
# File lib/mongoload/relation_loader.rb, line 18
def auto_include?(doc, metadata)
  metadata.auto_include? && relation?(doc, metadata) && !loaded?(doc, metadata)
end
eager_load(metadata, docs) click to toggle source
# File lib/mongoload/relation_loader.rb, line 14
def eager_load(metadata, docs)
  metadata.relation.eager_load_klass.new([metadata], docs).run
end
load(doc, metadata) click to toggle source
# File lib/mongoload/relation_loader.rb, line 6
def load(doc, metadata)
  docs = doc.auto_include_context.docs.select do |d|
    auto_include?(d, metadata)
  end
  eager_load(metadata, docs)
  docs.include?(doc)
end
loaded?(doc, metadata) click to toggle source
# File lib/mongoload/relation_loader.rb, line 26
def loaded?(doc, metadata)
  if [Mongoid::Relations::Referenced::In, Mongoid::Relations::Referenced::One].include?(metadata.relation)
    doc.ivar(metadata.name) != false
  else
    doc.public_send(metadata.name)._loaded?
  end
end
relation?(doc, metadata) click to toggle source
# File lib/mongoload/relation_loader.rb, line 22
def relation?(doc, metadata)
  doc.relations.values.include?(metadata)
end