Module: Mongoid::Attributes::Nested::ClassMethods
- Defined in:
- lib/mongoid/attributes/nested.rb
Overview
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 relation.
Instance Method Details
#accepts_nested_attributes_for(*args) ⇒ Object
Used when needing to update related models from a parent relation. Can be used on embedded or referenced relations.
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 |