123456789_123456789_123456789_123456789_123456789_

Module: ActiveModel::AttributeAssignment

Relationships & Source Files
Extension / Inclusion / Inheritance Descendants
Included In:
Defined in: activemodel/lib/active_model/attribute_assignment.rb

Instance Attribute Summary

Instance Method Summary

Instance Attribute Details

#attributes=(new_attributes) (writeonly)

Alias for #assign_attributes.

[ GitHub ]

  
# File 'activemodel/lib/active_model/attribute_assignment.rb', line 37

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'
[ GitHub ]

  
# File 'activemodel/lib/active_model/attribute_assignment.rb', line 28

def assign_attributes(new_attributes)
  unless new_attributes.respond_to?(:each_pair)
    raise ArgumentError, "When assigning attributes, you must pass a hash as an argument, #{new_attributes.class} passed."
  end
  return if new_attributes.empty?

  _assign_attributes(sanitize_for_mass_assignment(new_attributes))
end