强制从ActiveRecord返回结果的顺序

时间:2013-02-24 15:07:47

标签: mysql ruby-on-rails ruby-on-rails-3 ruby-1.9.3

我有以下数组(例如):

array = [234,675,11,233,99]

我运行类似以下ActiveRecord查询:

User.where(id: array)

返回的数组将随机排序。

但是,我希望返回的结果基于原始数组的顺序(即id = 234为first,id = 99为last)。

我可以在数组上循环并触发5个单独的查询,有没有更好的方法呢?

1 个答案:

答案 0 :(得分:2)

重复:

ActiveRecord.find(array_of_ids), preserving order

基本上代码应该是:

User.find(ids).order(“field(id,#{ids.join(',')})”)