Rails - 查询表,其中包含ID数组和基于数组的顺序

时间:2016-03-05 20:38:59

标签: ruby-on-rails ruby-on-rails-4 rails-activerecord

让我用简单的例子来描述。

我有一个数字列表:

ex:list = [ 3, 1, 2 ]

我在DB中有一个名为Products的表,其中有3行,product_id = 123

现在我需要查询Productslist(3,1,2)排序,结果将是:

product_3 product_1 product_2

查询将如下: product.sort(list)或product.order(list)或其他一些替代方案

1 个答案:

答案 0 :(得分:1)

这应该适合你:

list = [3, 1, 2]

Product.where(product_id: list).sort_by { |p| list.find_index(p.product_id) })