Module: Mongoload::RelationLoader
- Defined in:
- lib/mongoload/relation_loader.rb
Class Method Summary collapse
- .auto_include?(doc, metadata) ⇒ Boolean
- .eager_load(metadata, docs) ⇒ Object
- .load(doc, metadata) ⇒ Object
- .loaded?(doc, metadata) ⇒ Boolean
- .relation?(doc, metadata) ⇒ Boolean
Class Method Details
.auto_include?(doc, metadata) ⇒ Boolean
18 19 20 |
# File 'lib/mongoload/relation_loader.rb', line 18 def auto_include?(doc, ) .auto_include? && relation?(doc, ) && !loaded?(doc, ) end |
.eager_load(metadata, docs) ⇒ Object
14 15 16 |
# File 'lib/mongoload/relation_loader.rb', line 14 def eager_load(, docs) .relation.eager_load_klass.new([], docs).run end |
.load(doc, metadata) ⇒ Object
6 7 8 9 10 11 12 |
# File 'lib/mongoload/relation_loader.rb', line 6 def load(doc, ) docs = doc.auto_include_context.docs.select do |d| auto_include?(d, ) end eager_load(, docs) docs.include?(doc) end |
.loaded?(doc, metadata) ⇒ Boolean
26 27 28 29 30 31 32 |
# File 'lib/mongoload/relation_loader.rb', line 26 def loaded?(doc, ) if [Mongoid::Relations::Referenced::In, Mongoid::Relations::Referenced::One].include?(.relation) doc.ivar(.name) != false else doc.public_send(.name)._loaded? end end |
.relation?(doc, metadata) ⇒ Boolean
22 23 24 |
# File 'lib/mongoload/relation_loader.rb', line 22 def relation?(doc, ) doc.relations.values.include?() end |