module Mongoid::Association::Referenced::HasMany::Buildable

The Builder behavior for has_many associations.

@since 7.0

Public Instance Methods

build(base, object, type = nil, selected_fields = nil) click to toggle source

This method either takes an _id or an object and queries for the inverse side using the id or sets the object.

@example Build the document.

relation.build(meta, attrs)

@param [ Object ] base The base object. @param [ Object ] object The object to use to build the association. @param [ String ] type The type of document to query for. @param [ nil ] selected_fields Must be nil.

@return [ Document ] A single document.

# File lib/mongoid/association/referenced/has_many/buildable.rb, line 26
def build(base, object, type = nil, selected_fields = nil)
  return (object || []) unless query?(object)
  return [] if object.is_a?(Array)
  query_criteria(object, base)
end

Private Instance Methods

query?(object) click to toggle source
# File lib/mongoid/association/referenced/has_many/buildable.rb, line 34
def query?(object)
  object && Array(object).all? { |d| !d.is_a?(Mongoid::Document) }
end