Module: Mongoload::RelationLoader

Defined in:
lib/mongoload/relation_loader.rb

Class Method Summary collapse

Class Method Details

.auto_include?(doc, metadata) ⇒ Boolean

Returns:

  • (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

Returns:

  • (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

Returns:

  • (Boolean)


22
23
24
# File 'lib/mongoload/relation_loader.rb', line 22

def relation?(doc, )
  doc.relations.values.include?()
end