module ActiveMongoid::Associations::RecordRelation::Accessors

Public Instance Methods

build_record(name, object, metadata) click to toggle source
# File lib/active_mongoid/associations/record_relation/accessors.rb, line 7
def build_record(name, object, metadata)
  relation = create_record_relation(object, metadata)
  set_record_relation(name, relation)
end
create_record_relation(object, metadata) click to toggle source
# File lib/active_mongoid/associations/record_relation/accessors.rb, line 16
def create_record_relation(object, metadata)
  type = self.attributes[metadata.inverse_type]
  target = metadata.builder(self, object).build(type)
  target ? metadata.relation.new(self, target, metadata) : nil
end
set_record_relation(name, object) click to toggle source
# File lib/active_mongoid/associations/record_relation/accessors.rb, line 12
def set_record_relation(name, object)
  instance_variable_set("@#{name}", object)
end

Private Instance Methods

get_record_relation(name, metadata, object, reload = false) click to toggle source
# File lib/active_mongoid/associations/record_relation/accessors.rb, line 25
def get_record_relation(name, metadata, object, reload = false)
  if !reload && (value = instance_variable_get("@#{name}")) != nil
    value
  else
    if object && needs_no_database_query?(object, metadata)
      build_record(name, object, metadata)
    else
      build_record(name, attributes.with_indifferent_access[metadata.key].to_s, metadata)
    end
  end
end
needs_no_database_query?(object, metadata) click to toggle source
# File lib/active_mongoid/associations/record_relation/accessors.rb, line 37
def needs_no_database_query?(object, metadata)
  object.is_a?(::ActiveRecord::Base) && object.id == attributes[metadata.key]
end