🍓
【Rails】クエリ結果を任意の並び順にできるin_order_of
通常 order
をつかうActiveRecordの並べ替えですが、
これだと基本的に昇順・降順の並び替えのみになってしまいます。
特定のカラムの任意の並び順にしたい場合、Rails7から
in_order_of
と言うメソッドが追加されたのでご紹介します。
使用方法
User.in_order_of(:id, [1, 5, 3])
# SELECT "users".* FROM "users" ORDER BY FIELD("users"."id", 1, 5, 3)
第一引数にカラム名、第二引数にその並び順を指定します。
これを指定することで、 ORDER BY FIELD
を使ったSQLが発行され、
任意の順番に並べ替えることができるようになります。
ActiveRecord::QueryMethodsのメソッド
需要があるかわかりませんが、 in_order_of
はActiveRecord::QueryMethodsクラスのメソッドです。
公式のコードはこちら
Discussion