Rails の reverse_order メソッドについて。

Reverse the existing order clause on the relation.

User.order('name ASC').reverse_order # generated SQL has 'ORDER BY name DESC'

ref. ActiveRecord::QueryMethods | RailsDoc(β)

試してみる

> User.order(:id).to_sql
=> "SELECT \"users\".* FROM \"users\" ORDER BY \"users\".\"id\" ASC"
> User.order(:id).reverse_order.to_sql
=> "SELECT \"users\".* FROM \"users\" ORDER BY \"users\".\"id\" DESC"

order DESC でも試してみよう。

> User.order(id: :desc).to_sql
=> "SELECT \"users\".* FROM \"users\" ORDER BY \"users\".\"id\" DESC"
> User.order(id: :desc).reverse_order.to_sql
=> "SELECT \"users\".* FROM \"users\" ORDER BY \"users\".\"id\" ASC"

reverse_order にさらに order をチェインさせた場合。

> User.order(:id).reverse_order.order(:created_at).to_sql
=> "SELECT \"users\".* FROM \"users\" ORDER BY \"users\".\"id\" DESC, \"users\".\"created_at\" ASC"

参考