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.
-
#relation_exists?(name) ⇒ true, false
Determines if the relation exists or not.
-
#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 |
#relation_exists?(name) ⇒ true, false
Determines if the relation exists or not.
57 58 59 |
# File 'lib/mongoid/relations/accessors.rb', line 57 def relation_exists?(name) ivar(name) 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.
70 71 72 73 74 |
# File 'lib/mongoid/relations/accessors.rb', line 70 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.
88 89 90 |
# File 'lib/mongoid/relations/accessors.rb', line 88 def set_relation(name, relation) instance_variable_set("@_#{name}", relation) end |