Ruby on Rails:有没有办法从数据库中提取项目并按指定顺序返回它们?

我有一个项目ID, item_ids

我将此数组传递给ActiveRecord查询以从数据库中检索相应的项: Item.where(:id => item_ids)

有没有办法以与通过item_ids数组传入的顺序相同的顺序返回项目?

如果它有所不同,我在Ruby on Rails 3.0.12上使用PostgreSQL作为我的数据库。

您可以让数据库进行排序并避免多个index调用,您只需记住表达式而不是的SQL ORDER BY顺序:

 whens = item_ids.collect.with_index { |id, i| "when #{id} then #{i}" }.join(' ') items = Item.where(:id => item_ids).order("case id #{whens} end")