如何根据另一个 id 数组对这个 activerecord 结果集进行排序?
我对我的 activerecord 模型执行初始查询:
results = Foo.first(5)
results.each do |r|
#do some stuff initially with these records.
#5 records returned with ids: 1, 2, 3, 4, 5
end
然后我做一些进一步的处理,结果是另一个 id 数组:
desired_order_ids = [3,1,4,5,2]
我想按 Foo.id
按 desired_order_ids
id 数组指定的顺序对 results
进行排序。这个怎么做?实际上,上面的查询将检索 1000 条记录,所以我正在寻找内存效率最高的方法来执行此操作?
最佳答案
您需要最终结果是 ActiveRecord::Relation
吗?如果您愿意转换为 Array
,这应该是最简单的解决方案:
desired_order_ids.map { |id| results[id - 1] }
另一种选择是:
results.sort_by { |result| desired_order_ids.index(result.id) }
关于ruby-on-rails - 按另一个 id 数组对 activerecord 结果集进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33327751/