1
Help us understand the problem. What are the problem?

posted at

updated at

【Rails】レコードを配列の順番に並び替える

初めに

環境

Rails 7.0.2
Ruby 3.1.1

やりたいこと

配列の順番にレコードを並び替える。

本文

通常 where に配列を渡して、レコードを取得すると id 順に並び替えられて取得されます。
ですがin_order_ofを使用することで配列の順番に並び替えられます。

arr = [11,2,4,6,8,1]

users = User.where(id: arr)
# puts users.ids -> [1,2,4,6,8,11]


users = User.where(id: arr).in_order_of(:id ,arr)
# puts users.ids -> [11,2,4,6,8,1]

ちなみに Rails 7.0.0になってから追加されたメソッドでデータベースが Mysqlpostgresql でも関係なく動きます。

参考

in_order_of - Rails ドキュメント

ソースコード - Github

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
1
Help us understand the problem. What are the problem?