November 17, 2020
This blog is part of our Rails 6.1 series.
Rails 6.1 simplifies retrieving values of attributes on the Active Record model
instance by adding the values_at
attribute method. This is similar to the
values_at
method in Hash
and Array
.
Let's check out an example of extracting values from a User
model instance.
class User < ApplicationRecord
def full_name
"#{self.first_name} #{self.last_name}"
end
end
>> user = User.new(first_name: 'Era', last_name: 'Das' , email: '[email protected]')
=> User id: nil, first_name: "Era", last_name: "Das", created_at: nil, updated_at: nil, email: "[email protected]", password_digest: nil
As shown below using values_at
for full_name
, which is a method, returns
nil
.
>> user.attributes.values_at("first_name", "full_name")
=> ["Era", nil]
Rails 6.1 added the values_at
method on Active Record which returns an array
containing the values associated with the given methods.
>> user.values_at("first_name", "full_name")
=> ["Era", "Era Das"]
Check out the pull request for more details.
If this blog was helpful, check out our full blog archive.