Module: Mongoid::Relations::Builders::ClassMethods
- Defined in:
- lib/mongoid/relations/builders.rb
Overview
Instance Method Summary collapse
-
#builder(name, metadata) ⇒ Class
Defines a builder method for an embeds_one relation.
-
#creator(name, metadata) ⇒ Class
Defines a creator method for an embeds_one relation.
Instance Method Details
#builder(name, metadata) ⇒ Class
Defines a builder method for an embeds_one relation. This is defined as #build_name.
65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/mongoid/relations/builders.rb', line 65 def builder(name, ) re_define_method("build_#{name}") do |*args| attributes, = parse_args(*args) document = Factory.build(.klass, attributes, ) _building do child = send("#{name}=", document) child.run_callbacks(:build) child end end self end |
#creator(name, metadata) ⇒ Class
Defines a creator method for an embeds_one relation. This is defined as #create_name. After the object is built it will immediately save.
90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/mongoid/relations/builders.rb', line 90 def creator(name, ) re_define_method("create_#{name}") do |*args| attributes, = parse_args(*args) document = Factory.build(.klass, attributes, ) doc = send("#{name}=", document) doc.save save if new_record? && .stores_foreign_key? doc end self end |