次のような IN クエリを使用してレコードを検索しています。
Event.where("events.id IN (#{events.nil? ? '' : events.collect(&:id).join(',')})")
次のような出力が生成されます。
SELECT "events".* FROM "events" WHERE (events.id IN (143,169,139,48,172,146,145,124,111,49,108,18,113,144)) AND (status = 'live') LIMIT 10
ただし、これはデフォルトで update_at によってソートされます。クエリの IN 部分で並べ替えたいと思います。つまり、これを返す順序にしたいということです。
143,169,139,48,172,146,145,124,111,49,108,18,113,144
それはまったく可能ですか?
また、「イベント」部分が動的に生成されるため、テーブルに優先度列などを追加できないことにも注意する必要があります。
ここで非常によく似た質問を発見しました:
Rails Active Recordを使用したINリストのPostgres ORDER BY値
私のこれを重複としてマークしてください