April 2, 2019
This blog is part of our Rails 6 series.
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.
If this blog was helpful, check out our full blog archive.