Module: Mongoid::Association::Embedded::EmbedsMany::Buildable

Includes:
Threaded::Lifecycle
Included in:
Mongoid::Association::Embedded::EmbedsMany
Defined in:
build/mongoid-7.0/lib/mongoid/association/embedded/embeds_many/buildable.rb

Overview

Builder class for embeds_many associations.

Since:

  • 7.0

Instance Method Summary collapse

Instance Method Details

#build(base, object, type = nil) ⇒ Array<Document ] The documents.

Builds the document out of the attributes using the provided association metadata. Instantiates through the factory in order to make sure subclasses and allocation are used if fitting. This case will return many documents.

Examples:

Build the documents.

Builder.new(meta, attrs).build

Parameters:

  • base (Object)

    The base object.

  • object (Object)

    The object to use to build the relation.

  • type (String) (defaults to: nil)

    Not used in this context.

Returns:

  • (Array<Document ] The documents.)

    Array<Document ] The documents.

Since:

  • 7.0



25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'build/mongoid-7.0/lib/mongoid/association/embedded/embeds_many/buildable.rb', line 25

def build(base, object, type = nil)
  return [] if object.blank?
  return object if object.first.is_a?(Document)
  docs = []
  object.each do |attrs|
    if _loading? && base.persisted?
      docs.push(Factory.from_db(klass, attrs))
    else
      docs.push(Factory.build(klass, attrs))
    end
  end
  docs
end