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