Module: Sequel::Plugins::NestedAttributes::ClassMethods
- Defined in:
- lib/sequel/plugins/nested_attributes.rb
Instance Attribute Summary collapse
-
#nested_attributes_module ⇒ Object
Module to store the nested_attributes setter methods, so they can call be overridden and call super to get the default behavior.
Instance Method Summary collapse
-
#nested_attributes(*associations, &block) ⇒ Object
Allow nested attributes to be set for the given associations.
Instance Attribute Details
#nested_attributes_module ⇒ Object
Module to store the nested_attributes setter methods, so they can call be overridden and call super to get the default behavior
27 28 29 |
# File 'lib/sequel/plugins/nested_attributes.rb', line 27 def nested_attributes_module @nested_attributes_module end |
Instance Method Details
#nested_attributes(*associations, &block) ⇒ Object
Allow nested attributes to be set for the given associations. Options:
-
:destroy - Allow destruction of nested records.
-
:fields - If provided, should be an Array. Restricts the fields allowed to be modified through the association_attributes= method to the specific fields given.
-
:limit - For *_to_many associations, a limit on the number of records that will be processed, to prevent denial of service attacks.
-
:remove - Allow disassociation of nested records (can remove the associated object from the parent object, but not destroy the associated object).
-
:strict - Set to false to not raise an error message if a primary key is provided in a record, but it doesn’t match an existing associated object.
If a block is provided, it is passed each nested attribute hash. If the hash should be ignored, the block should return anything except false or nil.
43 44 45 46 47 48 49 50 51 52 |
# File 'lib/sequel/plugins/nested_attributes.rb', line 43 def nested_attributes(*associations, &block) include(self.nested_attributes_module ||= Module.new) unless nested_attributes_module opts = associations.last.is_a?(Hash) ? associations.pop : {} reflections = associations.map{|a| association_reflection(a) || raise(Error, "no association named #{a} for #{self}")} reflections.each do |r| r[:nested_attributes] = opts r[:nested_attributes][:reject_if] ||= block def_nested_attribute_method(r) end end |