Module: Mongoid::Attributes::Nested::ClassMethods
- Defined in:
- lib/mongoid/attributes/nested.rb
Constant Summary collapse
- REJECT_ALL_BLANK_PROC =
->(attributes){ attributes.all? { |key, value| key == '_destroy' || value.blank? } }
Instance Method Summary collapse
-
#accepts_nested_attributes_for(*args) ⇒ Object
Used when needing to update related models from a parent association.
Instance Method Details
#accepts_nested_attributes_for(*args) ⇒ Object
Used when needing to update related models from a parent association. Can be used on embedded or referenced associations.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/mongoid/attributes/nested.rb', line 48 def accepts_nested_attributes_for(*args) = args..dup [:autosave] = true if [:autosave].nil? [:reject_if] = REJECT_ALL_BLANK_PROC if [:reject_if] == :all_blank args.each do |name| meth = "#{name}_attributes=" self.nested_attributes["#{name}_attributes"] = meth association = relations[name.to_s] raise Errors::NestedAttributesMetadataNotFound.new(self, name) unless association autosave_nested_attributes(association) if [:autosave] re_define_method(meth) do |attrs| _assigning do if association.polymorphic? and association.inverse_type = .merge!(:class_name => self.send(association.inverse_type)) end association.nested_builder(attrs, ).build(self) end end end end |