Public Instance methods
Freeze nested_attributes_module when freezing model class.
# File lib/sequel/plugins/nested_attributes.rb 96 def freeze 97 @nested_attributes_module.freeze if @nested_attributes_module 98 99 super 100 end
Allow nested attributes to be set for the given associations. Options:
:destroy |
Allow destruction of nested records. |
:fields |
If provided, should be an |
:limit |
For *_to_many associations, a limit on the number of records that will be processed, to prevent denial of service attacks. |
:reject_if |
A proc that is called with each attribute hash before it is passed to its associated object. If the proc returns a truthy value, the attribute hash is ignored. |
:reject_nil |
Ignore nil objects passed to nested attributes setter methods. |
:remove |
Allow disassociation of nested records (can remove the associated object from the parent object, but not destroy the associated object). |
:require_modification |
Whether to require modification of nested objects when updating or deleting them (checking that a single row was updated). By default, uses the default require_modification setting for the nested object. |
:transform |
A proc to transform attribute hashes before they are passed to associated object. Takes two arguments, the parent object and the attribute hash. Uses the return value as the new attribute hash. |
:unmatched_pk |
Specify the action to be taken if a primary key is provided in a record, but it doesn’t match an existing associated object. Set to :create to create a new object with that primary key, :ignore to ignore the record, or :raise to raise an error. The default is :raise. |
If a block is provided, it is used to set the :reject_if option.
# File lib/sequel/plugins/nested_attributes.rb 131 def nested_attributes(*associations, &block) 132 include(@nested_attributes_module ||= Module.new) unless @nested_attributes_module 133 opts = associations.last.is_a?(Hash) ? associations.pop : OPTS 134 reflections = associations.map{|a| association_reflection(a) || raise(Error, "no association named #{a} for #{self}")} 135 reflections.each do |r| 136 r[:nested_attributes] = opts.dup 137 r[:nested_attributes][:unmatched_pk] ||= :raise 138 r[:nested_attributes][:reject_if] ||= block 139 def_nested_attribute_method(r) 140 end 141 end