LoginSignup
11

More than 5 years have passed since last update.

[Ruby on Rails] 配列を書かれた順番通りに取得する

Last updated at Posted at 2016-11-30

Overview

Rubyで、一時的なテストがしたいとかの理由で、特定のIDを配列に書かれた順番通りにfindして表示させたいということがたまにあり、そんなとき用の書き方メモです。

Detail

▼順番指定なし

普通に書くとID順とかになってしまう

順番指定なし
array = [10,2,4,7,5]

ordered_hoges = Hoge.find(array)

#=> 展開すると 2,4,5,7,10 の順になる

▼順番指定あり

sort_byでアレしてやると順番通りになる

順番指定あり
array = [10,2,4,7,5]

ordered_hoges = Hoge.find(array).sort_by{ |o| array.index(o.id)}

#️=> 展開すると 10,2,4,7,5 の順になる!

MySQLを使っている場合は、ActiveRecord経由でField関数を使って書いてもいいらしい
ref: http://qiita.com/chezou/items/8c0481044c954c4bca3b

順番指定あり/別パターン
array = [10,2,4,7,5]

ordered_hoges = Hoge.where(id: array).order("field(id, #{array.join(',')})")

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11