Module: Mongoid::Relations::Macros::ClassMethods
- Defined in:
- lib/mongoid/relations/macros.rb
Overview
:nodoc:
Instance Method Summary collapse
-
#embedded_in(name, options = {}, &block) ⇒ Object
Adds the relation back to the parent document.
-
#embeds_many(name, options = {}, &block) ⇒ Object
Adds the relation from a parent document to its children.
-
#embeds_one(name, options = {}, &block) ⇒ Object
Adds the relation from a parent document to its child.
-
#referenced_in(name, options = {}, &block) ⇒ Object
(also: #belongs_to_related, #belongs_to)
Adds a relational association from the child Document to a Document in another database or collection.
-
#references_and_referenced_in_many(name, options = {}, &block) ⇒ Object
(also: #has_and_belongs_to_many)
Adds a relational many-to-many association between many of this Document and many of another Document.
-
#references_many(name, options = {}, &block) ⇒ Object
(also: #has_many_related, #has_many)
Adds a relational association from a parent Document to many Documents in another database or collection.
-
#references_one(name, options = {}, &block) ⇒ Object
(also: #has_one_related, #has_one)
Adds a relational association from the child Document to a Document in another database or collection.
Instance Method Details
#embedded_in(name, options = {}, &block) ⇒ Object
Adds the relation back to the parent document. This macro is necessary to set the references from the child back to the parent document. If a child does not define this relation calling persistence methods on the child object will cause a save to fail.
52 53 54 55 56 57 |
# File 'lib/mongoid/relations/macros.rb', line 52 def (name, = {}, &block) characterize(name, Embedded::In, , &block).tap do || self. = true relate(name, ) end end |
#embeds_many(name, options = {}, &block) ⇒ Object
Adds the relation from a parent document to its children. The name of the relation needs to be a pluralized form of the child class name.
78 79 80 81 82 83 |
# File 'lib/mongoid/relations/macros.rb', line 78 def (name, = {}, &block) characterize(name, Embedded::Many, , &block).tap do || relate(name, ) validates_relation() end end |
#embeds_one(name, options = {}, &block) ⇒ Object
Adds the relation from a parent document to its child. The name of the relation needs to be a singular form of the child class name.
104 105 106 107 108 109 110 |
# File 'lib/mongoid/relations/macros.rb', line 104 def (name, = {}, &block) characterize(name, Embedded::One, , &block).tap do || relate(name, ) builder(name, ).creator(name) validates_relation() end end |
#referenced_in(name, options = {}, &block) ⇒ Object Also known as: belongs_to ,
Adds a relational association from the child Document to a Document in another database or collection.
130 131 132 133 134 135 136 137 |
# File 'lib/mongoid/relations/macros.rb', line 130 def referenced_in(name, = {}, &block) characterize(name, Referenced::In, , &block).tap do || relate(name, ) reference() autosave() validates_relation() end end |
#references_and_referenced_in_many(name, options = {}, &block) ⇒ Object Also known as: has_and_belongs_to_many
Adds a relational many-to-many association between many of this Document and many of another Document.
191 192 193 194 195 196 197 198 |
# File 'lib/mongoid/relations/macros.rb', line 191 def references_and_referenced_in_many(name, = {}, &block) characterize(name, Referenced::ManyToMany, , &block).tap do || relate(name, ) reference() autosave() validates_relation() end end |
#references_many(name, options = {}, &block) ⇒ Object Also known as: has_many ,
Adds a relational association from a parent Document to many Documents in another database or collection.
159 160 161 162 163 164 165 166 167 |
# File 'lib/mongoid/relations/macros.rb', line 159 def references_many(name, = {}, &block) () characterize(name, Referenced::Many, , &block).tap do || relate(name, ) reference() autosave() validates_relation() end end |
#references_one(name, options = {}, &block) ⇒ Object Also known as: has_one ,
Adds a relational association from the child Document to a Document in another database or collection.
219 220 221 222 223 224 225 226 |
# File 'lib/mongoid/relations/macros.rb', line 219 def references_one(name, = {}, &block) characterize(name, Referenced::One, , &block).tap do || relate(name, ) reference() builder(name, ).creator(name).autosave() validates_relation() end end |