May 17, 2016
This blog is part of our Rails 5 series.
Before Rails 5, we could use assign_attributes
and have bulk assignment of
attributes only for objects whose classes are inherited from
ActiveRecord::Base
class.
In Rails 5 we can make use of assign_attributes
method and have bulk
assignment of attributes even for objects whose classes are not inherited from
ActiveRecord::Base
.
This is possible because the attributes assignment code
is now moved from
ActiveRecord::AttributeAssignment
to ActiveModel::AttributeAssignment
module.
To have this up and running, we need to include
ActiveModel::AttributeAssignment
module to our class.
class User
include ActiveModel::AttributeAssignment
attr_accessor :email, :first_name, :last_name
end
user = User.new
user.assign_attributes({email: '[email protected]',
first_name: 'Sam',
last_name: 'Smith'})
> user.email
#=> "[email protected]"
> user.first_name
#=> "Sam"
If this blog was helpful, check out our full blog archive.