module Mongoload::RelationsAccessorsWithAutoInclude

Private Class Methods

assign_missing_proxy_method(relation) click to toggle source
# File lib/mongoload/patches/relations_accessors.rb, line 6
def self.assign_missing_proxy_method(relation)
  if relation.class == Mongoid::Relations::Targets::Enumerable
    relation.target.define_singleton_method :relation_metadata do
      relation.relation_metadata
    end

    relation.target.define_singleton_method :base do
      relation.base
    end
  end
end

Private Instance Methods

get_relation(name, metadata, object, reload=false) click to toggle source
Calls superclass method
# File lib/mongoload/patches/relations_accessors.rb, line 20
def get_relation(name, metadata, object, reload=false)
  # has_one and belongs_to will return the value immediately
  # while other relation are lazy
  if [Mongoid::Relations::Referenced::In, Mongoid::Relations::Referenced::One].include?(metadata.relation)
    Mongoload::RelationLoader.load(self, metadata) if !object.is_a?(metadata.klass) && ivar(name) == false
  end

  result = super
  result.tap do |relation|
    Mongoload::RelationsAccessorsWithAutoInclude.assign_missing_proxy_method(relation)
  end
end