Dyl*_*yen 2 ruby ruby-on-rails
我正在尝试查找使用的商店列表.where,但我也试图将它们排序为相同的 id 数组。
IE
ids = ["4", "15", "10", "20", "1"]
stores = Store.published.where(id: ids)
Run Code Online (Sandbox Code Playgroud)
看起来商店是按 id 的升序返回的,就像这样
[{id: 20}, {id: 15} {id: 10}, {id: 4}, {id: 1}]。我希望按照与ids订购方式相同的方式对退回的商店进行订购。另请注意,每个商店中的 id 都是整数,而数组中的 idids是字符串。
因为数字是记录的 ID,所以您可以简单地使用:
ids = ["4", "15", "10", "20", "1"]
stores = Store.find(ids)
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为find它也接受 ID 列表,并且当提供列表时,find将以与列表中相同的顺序返回记录。
在Ruby on Rails 7.0中,您将能够where与 结合使用in_order_of,其优点是如果未找到记录,则不会引发错误,并且您也可以按其他列及其值进行排序:
ids = ["4", "15", "10", "20", "1"]
stores = Store.where(id: ids).in_order_of(:id, ids)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1652 次 |
| 最近记录: |