Rails 6.1 adds values_at attribute method for Active Record

Chetan Gawai

Chetan Gawai

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

Before Rails 6.1

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]

After changes in Rails 6.1

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.

Stay up to date with our blogs.

Subscribe to receive email notifications for new blog posts.