Class: Mongoid::Association::Embedded::EmbedsMany

Inherits:
Object
  • Object
show all
Includes:
Buildable, Relatable
Defined in:
lib/mongoid/association/embedded/embeds_many.rb,
lib/mongoid/association/embedded/embeds_many/proxy.rb,
lib/mongoid/association/embedded/embeds_many/binding.rb,
lib/mongoid/association/embedded/embeds_many/buildable.rb

Overview

The EmbedsMany type association.

Since:

  • 7.0

Defined Under Namespace

Modules: Buildable Classes: Binding, Proxy

Constant Summary collapse

ASSOCIATION_OPTIONS =

The options available for this type of association, in addition to the common ones.

Returns:

  • (Array<Symbol>)

    The extra valid options.

Since:

  • 7.0

[
    :as,
    :cascade_callbacks,
    :cyclic,
    :order,
    :store_as,
    :before_add,
    :after_add,
    :before_remove,
    :after_remove
]
VALID_OPTIONS =

The complete list of valid options for this association, including the shared ones.

Returns:

  • (Array<Symbol>)

    The valid options.

Since:

  • 7.0

(ASSOCIATION_OPTIONS + SHARED_OPTIONS).freeze

Constants included from Relatable

Relatable::PRIMARY_KEY_DEFAULT, Relatable::SHARED_OPTIONS

Instance Attribute Summary

Attributes included from Relatable

#name, #options

Instance Method Summary collapse

Methods included from Buildable

#build

Methods included from Relatable

#==, #bindable?, #counter_cache_column_name, #create_relation, #destructive?, #extension, #foreign_key_check, #foreign_key_setter, #get_callbacks, #initialize, #inverse, #inverse_association, #inverse_class, #inverse_class_name, #inverse_setter, #inverse_type, #inverse_type_setter, #inverses, #klass, #relation_class_name, #setter, #type_setter, #validate?

Methods included from Options

#as, #autobuilding?, #autosave, #cascading_callbacks?, #counter_cached?, #cyclic?, #dependent, #forced_nil_inverse?, #indexed?, #inverse_of, #order, #touch_field

Methods included from Constrainable

#convert_to_foreign_key

Instance Method Details

#criteria(base, target) ⇒ Object

Get a criteria object for searching given a parent and children documents.

Parameters:

  • base (Document)

    The base document.

  • target (Document)

    The children documents.

Since:

  • 7.0



164
165
166
167
168
169
170
171
# File 'lib/mongoid/association/embedded/embeds_many.rb', line 164

def criteria(base, target)
  criterion = klass.scoped
  criterion.embedded = true
  criterion.documents = target
  criterion.parent_document = base
  criterion.association = self
  apply_ordering(criterion)
end

#embedded?true

Is this association type embedded?

Returns:

  • (true)

    Always true.

Since:

  • 7.0



77
# File 'lib/mongoid/association/embedded/embeds_many.rb', line 77

def embedded?; true; end

#keyString

The key that is used to get the attributes for the associated object.

Returns:

  • (String)

    The name of the field used to store the relation.

Since:

  • 7.0



68
69
70
# File 'lib/mongoid/association/embedded/embeds_many.rb', line 68

def key
  store_as.to_s
end

#nested_builder(attributes, options) ⇒ Association::Nested::Many

The nested builder object.

Parameters:

  • attributes (Hash)

    The attributes to use to build the association object.

  • options (Hash)

    The options for the association.

Returns:

Since:

  • 7.0



139
140
141
# File 'lib/mongoid/association/embedded/embeds_many.rb', line 139

def nested_builder(attributes, options)
  Nested::Many.new(self, attributes, options)
end

#path(document) ⇒ Mongoid::Atomic::Paths::Embedded::Many

Get the path calculator for the supplied document.

Examples:

Get the path calculator.

Proxy.path(document)

Parameters:

  • document (Document)

    The document to calculate on.

Returns:

Since:

  • 2.1.0



154
155
156
# File 'lib/mongoid/association/embedded/embeds_many.rb', line 154

def path(document)
  Mongoid::Atomic::Paths::Embedded::Many.new(document)
end

#polymorphic?true, false

Is this association polymorphic?

Returns:

  • (true, false)

    Whether this association is polymorphic.

Since:

  • 7.0



116
117
118
# File 'lib/mongoid/association/embedded/embeds_many.rb', line 116

def polymorphic?
  @polymorphic ||= !!@options[:as]
end

#primary_keynil

The primary key

Returns:

  • (nil)

    Not relevant for this relation

Since:

  • 7.0



100
# File 'lib/mongoid/association/embedded/embeds_many.rb', line 100

def primary_key; end

#relationAssociation::Embedded::EmbedsMany::Proxy

Get the relation proxy class for this association type.

Returns:

Since:

  • 7.0



107
108
109
# File 'lib/mongoid/association/embedded/embeds_many.rb', line 107

def relation
  Proxy
end

#setup!self

Setup the instance methods, fields, etc. on the association owning class.

Returns:

  • (self)

Since:

  • 7.0



47
48
49
50
51
52
# File 'lib/mongoid/association/embedded/embeds_many.rb', line 47

def setup!
  setup_instance_methods!
  @owner_class.embedded_relations = @owner_class.embedded_relations.merge(name => self)
  @owner_class.aliased_fields[name.to_s] = store_as if store_as
  self
end

#store_asString

The field key used to store the list of association objects.

Returns:

  • (String)

    The field name.

Since:

  • 7.0



59
60
61
# File 'lib/mongoid/association/embedded/embeds_many.rb', line 59

def store_as
  @store_as ||= (@options[:store_as].try(:to_s) || name.to_s)
end

#stores_foreign_key?false

Does this association type store the foreign key?

Returns:

  • (false)

    Always false.

Since:

  • 7.0



95
# File 'lib/mongoid/association/embedded/embeds_many.rb', line 95

def stores_foreign_key?; false; end

#typeString?

Note:

Only relevant if the association is polymorphic.

The field used to store the type of the related object.

Returns:

  • (String, nil)

    The field for storing the associated object's type.

Since:

  • 7.0



127
128
129
# File 'lib/mongoid/association/embedded/embeds_many.rb', line 127

def type
  @type ||= "#{as}_type" if polymorphic?
end

#validation_defaulttrue

Get the default validation setting for the relation. Determines if by default a validates associated will occur.

Examples:

Get the validation default.

Proxy.validation_default

Returns:

  • (true)

    Always true.

Since:

  • 2.1.9



88
# File 'lib/mongoid/association/embedded/embeds_many.rb', line 88

def validation_default; true; end