Module: ActiveModel::AttributeAssignment
Relationships & Source Files | |
Extension / Inclusion / Inheritance Descendants | |
Included In:
Model ,
::ActiveRecord::AttributeAssignment ,
::ActiveRecord::Base ,
ActiveRecord::InternalMetadata,
ActiveRecord::SchemaMigration
| |
Defined in: | activemodel/lib/active_model/attribute_assignment.rb |
Instance Attribute Summary
-
#attributes=(new_attributes)
writeonly
Alias for #assign_attributes.
Instance Method Summary
-
#assign_attributes(new_attributes)
(also: #attributes=)
Allows you to set all the attributes by passing in a hash of attributes with keys matching the attribute names.
Instance Attribute Details
#attributes=(new_attributes) (writeonly)
Alias for #assign_attributes.
# File 'activemodel/lib/active_model/attribute_assignment.rb', line 38
alias attributes= assign_attributes
Instance Method Details
#assign_attributes(new_attributes) Also known as: #attributes=
Allows you to set all the attributes by passing in a hash of attributes with keys matching the attribute names.
If the passed hash responds to permitted?
method and the return value of this method is false
an ForbiddenAttributesError
exception is raised.
class Cat
include ActiveModel::AttributeAssignment
attr_accessor :name, :status
end
cat = Cat.new
cat.assign_attributes(name: "Gorby", status: "yawning")
cat.name # => 'Gorby'
cat.status # => 'yawning'
cat.assign_attributes(status: "sleeping")
cat.name # => 'Gorby'
cat.status # => 'sleeping'
# File 'activemodel/lib/active_model/attribute_assignment.rb', line 28
def assign_attributes(new_attributes) if !new_attributes.respond_to?(:stringify_keys) raise ArgumentError, "When assigning attributes, you must pass a hash as an argument." end return if new_attributes.empty? attributes = new_attributes.stringify_keys _assign_attributes(sanitize_for_mass_assignment(attributes)) end