Class: Mongoid::Association::Referenced::NestedAttributes::One
- Inherits:
-
NestedBuilder
- Object
- NestedBuilder
- Mongoid::Association::Referenced::NestedAttributes::One
- Defined in:
- build/mongoid-7.3/lib/mongoid/association/referenced/has_one/nested_builder.rb
Instance Attribute Summary collapse
-
#destroy ⇒ Object
Returns the value of attribute destroy.
Instance Method Summary collapse
-
#build(parent) ⇒ Document
Builds the association depending on the attributes and the options passed to the macro.
-
#initialize(association, attributes, options) ⇒ One
constructor
Create the new builder for nested attributes on one-to-one associations.
Constructor Details
#initialize(association, attributes, options) ⇒ One
Create the new builder for nested attributes on one-to-one associations.
51 52 53 54 55 56 |
# File 'build/mongoid-7.3/lib/mongoid/association/referenced/has_one/nested_builder.rb', line 51 def initialize(association, attributes, ) @attributes = attributes.with_indifferent_access @association = association @options = @destroy = @attributes.delete(:_destroy) end |
Instance Attribute Details
#destroy ⇒ Object
Returns the value of attribute destroy.
10 11 12 |
# File 'build/mongoid-7.3/lib/mongoid/association/referenced/has_one/nested_builder.rb', line 10 def destroy @destroy end |
Instance Method Details
#build(parent) ⇒ Document
Note:
This attempts to perform 3 operations, either one of an update of the existing association, a replacement of the association with a new document, or a removal of the association.
Builds the association depending on the attributes and the options passed to the macro.
27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'build/mongoid-7.3/lib/mongoid/association/referenced/has_one/nested_builder.rb', line 27 def build(parent) return if reject?(parent, attributes) @existing = parent.send(association.name) if update? attributes.delete_id existing.assign_attributes(attributes) elsif replace? parent.send(association.setter, Factory.build(association.klass, attributes)) elsif delete? parent.send(association.setter, nil) end end |