【发布时间】:2010-10-22 13:21:50
【问题描述】:
我想获得一个给定 id 数组的 ActiveRecord 对象数组。
我认为
Object.find([5,2,3])
将返回一个包含对象 5、对象 2、然后是对象 3 的数组,但我得到的数组顺序为对象 2、对象 3 和对象 5。
ActiveRecord Base find method API 提到您不应该按照提供的顺序期待它(其他文档没有给出此警告)。
Find by array of ids in the same order? 中给出了一个可能的解决方案,但 order 选项似乎对 SQLite 无效。
我可以自己编写一些 ruby 代码来对对象进行排序(有点简单但缩放效果不佳,或者缩放效果更好但更复杂),但有更好的方法吗?
【问题讨论】:
-
这些 id 是从哪里来的?如果是 UI(通过用户选择它们),那么缩放应该不是问题,即用户不太可能花时间选择 1000 个 id)。如果是数据库(例如,来自连接表),您能否将订单存储在连接表中并根据它发出查找?
-
看起来这是 Rails 5 中的no longer true。
标签: ruby-on-rails sqlite activerecord find rails-activerecord