Module: Mongoid::Association::Embedded::EmbedsOne::Buildable
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Included In:
| |
Super Chains via Extension / Inclusion / Inheritance | |
Instance Chain:
|
|
Defined in: | lib/mongoid/association/embedded/embeds_one/buildable.rb |
Overview
Builder class for embeds_one associations.
Instance Attribute Summary
::Mongoid::Threaded::Lifecycle
- Included
#_assigning | Begin the assignment of attributes. |
#_assigning? | Is the current thread in assigning mode? |
#_binding | Execute a block in binding mode. |
#_binding? | Is the current thread in binding mode? |
#_building | Execute a block in building mode. |
#_building? | Is the current thread in building mode? |
#_creating? | Is the current thread in creating mode? |
#_loading | Execute a block in loading mode. |
#_loading? | Is the current thread in loading mode? |
Instance Method Summary
-
#build(base, object, _type = nil, selected_fields = nil) ⇒ Document
Builds the document out of the attributes using the provided association metadata on the association.
- #clear_associated(doc) private
Instance Method Details
#build(base, object, _type = nil, selected_fields = nil) ⇒ Document
Builds the document out of the attributes using the provided association metadata on the association. Instantiates through the factory in order to make sure subclasses and allocation are used if fitting.
# File 'lib/mongoid/association/embedded/embeds_one/buildable.rb', line 28
def build(base, object, _type = nil, selected_fields = nil) if object.is_a?(Hash) if _loading? && base.persisted? Factory.execute_from_db(klass, object, nil, selected_fields, execute_callbacks: false) else Factory.build(klass, object) end else clear_associated(object) object end end
#clear_associated(doc) (private)
[ GitHub ]# File 'lib/mongoid/association/embedded/embeds_one/buildable.rb', line 43
def clear_associated(doc) if doc && (inv = inverse(doc)) if associated = doc.ivar(inv) associated.substitute(nil) end end end