Class: Mongoid::Association::Referenced::HasMany
- Inherits:
-
Object
- Object
- Mongoid::Association::Referenced::HasMany
- Defined in:
- lib/mongoid/association/referenced/has_many.rb,
lib/mongoid/association/referenced/has_many/eager.rb,
lib/mongoid/association/referenced/has_many/proxy.rb,
lib/mongoid/association/referenced/has_many/binding.rb,
lib/mongoid/association/referenced/has_many/buildable.rb,
lib/mongoid/association/referenced/has_many/enumerable.rb
Overview
The has_many association.
Defined Under Namespace
Modules: Buildable Classes: Binding, Eager, Enumerable, Proxy
Constant Summary collapse
- ASSOCIATION_OPTIONS =
The options available for this type of association, in addition to the common ones.
%i[ after_add after_remove as autosave before_add before_remove dependent foreign_key order primary_key scope ].freeze
- VALID_OPTIONS =
The complete list of valid options for this association, including the shared ones.
(ASSOCIATION_OPTIONS + SHARED_OPTIONS).freeze
- FOREIGN_KEY_SUFFIX =
The default foreign key suffix.
'_id'
Constants included from Mongoid::Association::Relatable
Mongoid::Association::Relatable::PRIMARY_KEY_DEFAULT, Mongoid::Association::Relatable::SHARED_OPTIONS
Instance Attribute Summary
Attributes included from Mongoid::Association::Relatable
#name, #options, #owner_class, #parent_inclusions
Instance Method Summary collapse
-
#add_polymorphic_criterion(criteria, object_class) ⇒ Mongoid::Criteria
deprecated
Deprecated.
in 9.0.x
-
#bindable?(doc) ⇒ true | false
Whether trying to bind an object using this association should raise an error.
-
#criteria(base) ⇒ Mongoid::Criteria
The criteria used for querying this association.
-
#embedded? ⇒ false
Is this association type embedded?.
-
#foreign_key ⇒ String
Get the foreign key field on the inverse for saving the association reference.
-
#nested_builder(attributes, options) ⇒ Association::Nested::Many
The nested builder object.
-
#path(document) ⇒ Root
Get the path calculator for the supplied document.
-
#polymorphic? ⇒ true | false
Is this association polymorphic?.
-
#relation ⇒ Association::HasMany::Proxy
Get the association proxy class for this association type.
-
#relation_complements ⇒ Array<Mongoid::Association::Relatable>
The list of association complements.
-
#scope ⇒ Proc | Symbol | nil
Get the scope to be applied when querying the association.
-
#setup! ⇒ self
Setup the instance methods, fields, etc.
-
#setup_instance_methods! ⇒ self
Setup the instance methods on the class having this association type.
-
#stores_foreign_key? ⇒ true
Does this association type store the foreign key?.
-
#type ⇒ String | nil
The type of this association if it's polymorphic.
-
#validation_default ⇒ true
The default for validation the association object.
Methods included from WithPolymorphicCriteria
Methods included from Buildable
Methods included from Mongoid::Association::Relatable
#==, #counter_cache_column_name, #create_relation, #destructive?, #extension, #foreign_key_check, #foreign_key_setter, #get_callbacks, #in_to?, #initialize, #inverse, #inverse_association, #inverse_class, #inverse_class_name, #inverse_setter, #inverse_type, #inverse_type_setter, #inverses, #key, #many?, #one?, #relation_class, #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, #primary_key, #store_as, #touch_field, #touchable?
Methods included from Constrainable
Instance Method Details
#add_polymorphic_criterion(criteria, object_class) ⇒ Mongoid::Criteria
in 9.0.x
Add polymorphic query criteria to a Criteria object, if this association is polymorphic.
It appears as if this method is an artifact left over from a refactoring that renamed it
with_polymorphic_criterion, and made it private. Regardless, this method isn't referenced
anywhere else, and is unlikely to be useful to external clients. We should remove it.
148 149 150 151 152 153 154 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 148 def add_polymorphic_criterion(criteria, object_class) if polymorphic? criteria.where(type => object_class.name) else criteria end end |
#bindable?(doc) ⇒ true | false
Whether trying to bind an object using this association should raise an error.
170 171 172 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 170 def bindable?(doc) forced_nil_inverse? || (!!inverse && doc.fields.keys.include?(foreign_key)) end |
#criteria(base) ⇒ Mongoid::Criteria
The criteria used for querying this association.
122 123 124 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 122 def criteria(base) query_criteria(base.send(primary_key), base) end |
#embedded? ⇒ false
Is this association type embedded?
94 95 96 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 94 def false end |
#foreign_key ⇒ String
Get the foreign key field on the inverse for saving the association reference.
83 84 85 86 87 88 89 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 83 def foreign_key @foreign_key ||= if @options[:foreign_key] @options[:foreign_key].to_s else default_foreign_key_field end end |
#nested_builder(attributes, options) ⇒ Association::Nested::Many
The nested builder object.
180 181 182 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 180 def nested_builder(attributes, ) Nested::Many.new(self, attributes, ) end |
#path(document) ⇒ Root
Get the path calculator for the supplied document.
192 193 194 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 192 def path(document) Mongoid::Atomic::Paths::Root.new(document) end |
#polymorphic? ⇒ true | false
Is this association polymorphic?
160 161 162 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 160 def polymorphic? @polymorphic ||= !!as end |
#relation ⇒ Association::HasMany::Proxy
Get the association proxy class for this association type.
115 116 117 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 115 def relation Proxy end |
#relation_complements ⇒ Array<Mongoid::Association::Relatable>
The list of association complements.
51 52 53 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 51 def relation_complements @relation_complements ||= [ Referenced::BelongsTo ].freeze end |
#scope ⇒ Proc | Symbol | nil
Get the scope to be applied when querying the association.
199 200 201 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 199 def scope @options[:scope] end |
#setup! ⇒ self
Setup the instance methods, fields, etc. on the association owning class.
58 59 60 61 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 58 def setup! setup_instance_methods! self end |
#setup_instance_methods! ⇒ self
Setup the instance methods on the class having this association type.
66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 66 def setup_instance_methods! define_getter! define_ids_getter! define_setter! define_ids_setter! define_existence_check! define_autosaver! polymorph! define_dependency! @owner_class.validates_associated(name) if validate? self end |
#stores_foreign_key? ⇒ true
Does this association type store the foreign key?
108 109 110 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 108 def stores_foreign_key? false end |
#type ⇒ String | nil
Only relevant for polymorphic associations.
The type of this association if it's polymorphic.
131 132 133 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 131 def type @type ||= "#{as}_type" if polymorphic? end |
#validation_default ⇒ true
The default for validation the association object.
101 102 103 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 101 def validation_default true end |