在其上应用活动记录“where”时保持原始数组顺序

Flo*_*aud 4 ruby arrays activerecord ruby-on-rails

只是一个问题,array = [19, 5, 1, 4] 当我调用 where 来Delivery.where(id: array.map(&:id))具有活动记录关系而不是数组时,我有一个带有一些 id 的数组, \xe2\x80\x9cwhere\xe2\x80\x9d 语句正在对 id 进行排序并给我所有按 id 排序的对象:\n #<ActiveRecord::Relation [#<Delivery id: 1, ... >, #<Delivery id: 4, ... >, #<Delivery id: 5, ... >, #<Delivery id: 19, ... >\n有人知道如何保持原始顺序吗?

\n

谢谢 !

\n

spi*_*ann 8

ActiveRecord.find\xe2\x80\x93 当使用数组 \xe2\x80\x93 调用时,将自动以完全相同的顺序返回记录。

\n

只需将您的查询更改为:

\n
Delivery.find(array.map(&:id))\n
Run Code Online (Sandbox Code Playgroud)\n

引用文档

\n
\n

注意:返回的记录与您提供的 id 的顺序相同。[...]

\n
\n