BigBinary Blog
We write about Ruby on Rails, React.js, React Native, remote work, open source, engineering and design.
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: 'era@gmail.com')
=> User id: nil, first_name: "Era", last_name: "Das", created_at: nil, updated_at: nil, email: "era@gmail.com", 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.