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