アイテム ID の配列がありますitem_ids
。
この配列を ActiveRecord クエリに渡して、データベースから対応する項目を取得します。Item.where(:id => item_ids)
item_ids
配列を介して渡されたのと同じ順序でアイテムを返す方法はありますか?
それが違いを生む場合、私は Ruby on Rails 3.0.12 を使用しており、PostgreSQL をデータベースとして使用しています。
アイテム ID の配列がありますitem_ids
。
この配列を ActiveRecord クエリに渡して、データベースから対応する項目を取得します。Item.where(:id => item_ids)
item_ids
配列を介して渡されたのと同じ順序でアイテムを返す方法はありますか?
それが違いを生む場合、私は Ruby on Rails 3.0.12 を使用しており、PostgreSQL をデータベースとして使用しています。
データベースに並べ替えを実行させ、複数の呼び出しを回避することができます。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")