2025-07-10 Rails reverse_order
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"