例如,我想要通过 id 数组获取产品,但我希望这些产品与 id 数组的顺序相同。
例如,我想要 id 为 6、3、8 的产品:
ids = [6, 3, 8]
Product.where(id: ids)
它给了我产品,但第一个是 id = 3 的产品,第二个是 id = 6 的产品...
我希望这些产品与 ids
数组的顺序相同。我想要 id = 6 的第一个产品,id = 3 的第二个产品...
我怎样才能在产品查询中做到这一点?
最佳答案
索引应该工作:
Product.where(id: ids).index_by(&:id).values_at(*ids)
或者只是(在 MySQL 中检查,但如果 ID 来自外部来源,则在 ids
之前清理):
Product.where(id: ids).order("field(id, #{ids.join(', ')})")
关于ruby-on-rails - 按 id 数组获取元素并按此数组排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47326634/