Rails活动记录在查找后从数组维护顺序

时间:2014-03-15 00:33:38

标签: ruby-on-rails activerecord

我正在通过查找一系列ID,并且我希望保持对象的顺序与我通过的顺序相同。我假设他们设置的顺序是模型中设置的主要顺序。

数组顺序

just items = [488800, 489404, 485616, 380112, 501101, 485606, 485612, 485619, 480304, 493609, 496200, 496203, 503000, 499111, 488802, 488825, 501700] 

活动记录的顺序

@item_recomendations = CatalogItem.find(just_items)
@item_recomendations.map {|x| x.id }
 => [380112, 480304, 485606, 485612, 485616, 485619, 488800, 488802, 488825, 489404, 493609, 496200, 496203, 499111, 501101, 501700, 503000] 

2 个答案:

答案 0 :(得分:1)

@item_recomendations = CatalogItem.find(just_items).sort_by{|x| just_items.index x.catalog_item_id }

答案 1 :(得分:0)

如果性能不是问题(你应该先尝试这个并首先测试它来证明它是什么),只需自己迭代数组:

items.collect { |id| CatalogItem.find(id) }