module ActiveMongoid::Associations::DocumentRelation::Accessors
Public Instance Methods
build_document(name, object, metadata)
click to toggle source
# File lib/active_mongoid/associations/document_relation/accessors.rb, line 7 def build_document(name, object, metadata) relation = create_document_relation(object, metadata) set_document_relation(name, relation) end
create_document_relation(object, metadata)
click to toggle source
# File lib/active_mongoid/associations/document_relation/accessors.rb, line 16 def create_document_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_document_relation(name, object)
click to toggle source
# File lib/active_mongoid/associations/document_relation/accessors.rb, line 12 def set_document_relation(name, object) instance_variable_set("@#{name}", object) end
Private Instance Methods
get_document_relation(name, metadata, object, reload = false)
click to toggle source
# File lib/active_mongoid/associations/document_relation/accessors.rb, line 24 def get_document_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_document(name, object, metadata) else build_document(name, self.send(metadata.key), metadata) end end end
needs_no_database_query?(object, metadata)
click to toggle source
# File lib/active_mongoid/associations/document_relation/accessors.rb, line 36 def needs_no_database_query?(object, metadata) object.is_a?(::Mongoid::Document) && object.id.to_s == attributes[metadata.key].to_s end