This blog is part of our Rails 6 series. Rails 6.0 was recently released.

Rails have rewhere and reorder methods to change the previously set conditions attributes to new attributes which are given as an argument to method.

Before Rails 6, if you want to change the previously set select statement attributes to new attributes, it was done as follows.

>> Post . select ( :title , :body ). unscope ( :select ). select ( :views ) SELECT "posts" . "views" FROM "posts" LIMIT ? [ "LIMIT" , 1 ]]

In Rails 6, ActiveRecord::Relation#reselect method is added.

The reselect method is similar to rewhere and reorder . reselect is a short-hand for unscope(:select).select(fields) .

Here is how reselect method can be used.

>> Post . select ( :title , :body ). reselect ( :views ) SELECT "posts" . "views" FROM "posts" LIMIT ? [ "LIMIT" , 1 ]]

Check out the pull request for more details on this.