Module: Mongoid::Relations::Accessors
- Extended by:
- ActiveSupport::Concern
- Included in:
- Mongoid::Relations
- Defined in:
- lib/mongoid/relations/accessors.rb
Overview
This module contains all the behaviour related to accessing relations through the getters and setters, and how to delegate to builders to create new ones.
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
-
#__build__(name, object, metadata) ⇒ Proxy
Builds the related document and creates the relation unless the document is nil, then sets the relation on this document.
-
#create_relation(object, metadata) ⇒ Proxy
Create a relation from an object and metadata.
-
#reset_relation_criteria(name) ⇒ Object
Resets the criteria inside the relation proxy.
-
#set_relation(name, relation) ⇒ Proxy
Set the supplied relation to an instance variable on the class with the provided name.
Instance Method Details
#__build__(name, object, metadata) ⇒ Proxy
Builds the related document and creates the relation unless the document is nil, then sets the relation on this document.
25 26 27 28 |
# File 'lib/mongoid/relations/accessors.rb', line 25 def __build__(name, object, ) relation = create_relation(object, ) set_relation(name, relation) end |
#create_relation(object, metadata) ⇒ Proxy
Create a relation from an object and metadata.
41 42 43 44 45 |
# File 'lib/mongoid/relations/accessors.rb', line 41 def create_relation(object, ) type = @attributes[.inverse_type] target = .builder(self, object).build(type) target ? .relation.new(self, target, ) : nil end |
#reset_relation_criteria(name) ⇒ Object
Resets the criteria inside the relation proxy. Used by many to many relations to keep the underlying ids array in sync.
56 57 58 59 60 |
# File 'lib/mongoid/relations/accessors.rb', line 56 def reset_relation_criteria(name) if instance_variable_defined?("@_#{name}") send(name).reset_unloaded end end |
#set_relation(name, relation) ⇒ Proxy
Set the supplied relation to an instance variable on the class with the provided name. Used as a helper just for code cleanliness.
74 75 76 |
# File 'lib/mongoid/relations/accessors.rb', line 74 def set_relation(name, relation) instance_variable_set("@_#{name}", relation) end |