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, options = {}) ⇒ 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.
-
#options(args) ⇒ Hash
Return the options passed to the builders.
-
#relation_exists?(name) ⇒ true, false
Determines if the relation exists or not.
-
#set(name, relation) ⇒ Proxy
Set the supplied relation to an instance variable on the class with the provided name.
-
#substitute(name, object, options) ⇒ Object
Replace an existing relation with a new one.
Instance Method Details
#build(name, object, metadata, options = {}) ⇒ 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 29 30 |
# File 'lib/mongoid/relations/accessors.rb', line 25 def build(name, object, , = {}) relation = create_relation(object, ) set(name, relation).tap do |relation| relation.load!() if relation && [:eager] end end |
#create_relation(object, metadata) ⇒ Proxy
Create a relation from an object and metadata.
57 58 59 60 61 |
# File 'lib/mongoid/relations/accessors.rb', line 57 def create_relation(object, ) type = @attributes[.inverse_type] target = .builder(object).build(type) target ? .relation.new(self, target, ) : nil end |
#options(args) ⇒ Hash
Return the options passed to the builders.
42 43 44 |
# File 'lib/mongoid/relations/accessors.rb', line 42 def (args) Mongoid.binding_defaults.merge(args.) end |
#relation_exists?(name) ⇒ true, false
Determines if the relation exists or not.
73 74 75 |
# File 'lib/mongoid/relations/accessors.rb', line 73 def relation_exists?(name) ivar(name) end |
#set(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.
89 90 91 |
# File 'lib/mongoid/relations/accessors.rb', line 89 def set(name, relation) instance_variable_set("@#{name}", relation) end |
#substitute(name, object, options) ⇒ Object
Replace an existing relation with a new one.
103 104 105 |
# File 'lib/mongoid/relations/accessors.rb', line 103 def substitute(name, object, ) set(name, ivar(name).substitute(object, )) end |