Module: Mongoid::Association::Embedded::EmbedsOne::Buildable

Includes:
Threaded::Lifecycle
Included in:
Mongoid::Association::Embedded::EmbedsOne
Defined in:
lib/mongoid/association/embedded/embeds_one/buildable.rb

Overview

Builder class for embeds_one associations.

Instance Method Summary collapse

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.

Examples:

Build the document.

Builder.new(meta, attrs).build

Parameters:

  • base (Document)

    The document this association hangs off of.

  • object (Document | Hash)

    The related document.

  • _type (String) (defaults to: nil)

    Not used in this context.

  • selected_fields (Hash) (defaults to: nil)

    Fields which were retrieved via #only. If selected_fields are specified, fields not listed in it will not be accessible in the built document.

Returns:



28
29
30
31
32
33
34
35
36
37
38
39
# 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