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.
[ :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'.freeze
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, #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.
142 143 144 145 146 147 148 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 142 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.
164 165 166 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 164 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.
116 117 118 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 116 def criteria(base) query_criteria(base.send(primary_key), base) end |
#embedded? ⇒ false
Is this association type embedded?
94 |
# 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.
86 87 88 89 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 86 def foreign_key @foreign_key ||= @options[:foreign_key] ? @options[:foreign_key].to_s : default_foreign_key_field end |
#nested_builder(attributes, options) ⇒ Association::Nested::Many
The nested builder object.
174 175 176 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 174 def nested_builder(attributes, ) Nested::Many.new(self, attributes, ) end |
#path(document) ⇒ Root
Get the path calculator for the supplied document.
186 187 188 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 186 def path(document) Mongoid::Atomic::Paths::Root.new(document) end |
#polymorphic? ⇒ true | false
Is this association polymorphic?
154 155 156 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 154 def polymorphic? @polymorphic ||= !!as end |
#relation ⇒ Association::HasMany::Proxy
Get the association proxy class for this association type.
109 110 111 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 109 def relation Proxy end |
#relation_complements ⇒ Array<Mongoid::Association::Relatable>
The list of association complements.
53 54 55 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 53 def relation_complements @relation_complements ||= [ Referenced::BelongsTo ].freeze end |
#scope ⇒ Proc | Symbol | nil
Get the scope to be applied when querying the association.
193 194 195 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 193 def scope @options[:scope] end |
#setup! ⇒ self
Setup the instance methods, fields, etc. on the association owning class.
60 61 62 63 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 60 def setup! setup_instance_methods! self end |
#setup_instance_methods! ⇒ self
Setup the instance methods on the class having this association type.
68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 68 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?
104 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 104 def stores_foreign_key?; false; end |
#type ⇒ String | nil
Only relevant for polymorphic associations.
The type of this association if it’s polymorphic.
125 126 127 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 125 def type @type ||= "#{as}_type" if polymorphic? end |
#validation_default ⇒ true
The default for validation the association object.
99 |
# File 'lib/mongoid/association/referenced/has_many.rb', line 99 def validation_default; true; end |