gpt4 book ai didi

ruby-on-rails - Rails 根据传入where条件的数组对记录进行排序

转载 作者:数据小太阳 更新时间:2023-10-29 08:45:05 25 4
gpt4 key购买 nike

我想按照传递数组中值的顺序对 where 条件结果进行排序。我正在做的是我有一个 id 数组

ids = [80, 20, 3, 91, 84, 90, 98, 97, 68, 99, 92, 73]

当我将这个数组传递给 where 条件时:

products = Product.where(id: ids)

它以不同的顺序(随机顺序)返回结果事件记录关系,例如:

=>[ 20 ,84, 3,98 , .............. ] 

(这是事件记录关系对象,我在这里只提到了 id)

但我希望它以与传递值相同的顺序返回对象(在事件记录关系对象中不是数组)

=> [80, 20, 3, 91, 84, 90, 98, 97, 68, 99, 92, 73]

我该怎么做。

最佳答案

我已经得到了这个只需要做的解决方案

在 product.rb 文件中的产品模型中放置:

 def self.order_by_ids(ids)
order_by = ["case"]
ids.each_with_index.map do |id, index|
order_by << "WHEN id='#{id}' THEN #{index}"
end
order_by << "end"
order(order_by.join(" "))
end

查询将是:

products = Product.where(:id => ids).order_by_ids(ids)

这里的 ids 将是 id 的数组

关于ruby-on-rails - Rails 根据传入where条件的数组对记录进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31067428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com