3

アイテム ID の配列がありますitem_ids

この配列を ActiveRecord クエリに渡して、データベースから対応する項目を取得します。Item.where(:id => item_ids)

item_ids配列を介して渡されたのと同じ順序でアイテムを返す方法はありますか?

それが違いを生む場合、私は Ruby on Rails 3.0.12 を使用しており、PostgreSQL をデータベースとして使用しています。

4

1 に答える 1

4

データベースに並べ替えを実行させ、複数の呼び出しを回避することができます。SQL ORDER BY はではなくindexで注文することを覚えておく必要があります。

whens = item_ids.collect.with_index { |id, i| "when #{id} then #{i}" }.join(' ')
items = Item.where(:id => item_ids).order("case id #{whens} end")
于 2012-09-19T21:07:56.267 に答える