按数组排序 ActiveRecord 记录

Moa*_*nou 2 postgresql ruby-on-rails

我正在使用 postgres DB & 我有一个产品 ID 数组:[5, 4, 1, 2] 然后我调用了

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

现在调用后的结果产品排序products.map(&:id)[4, 1, 2, 5]

如何使用相同类型的ids数组对产品进行排序?

Ste*_*zyn 5

我无法进行测试,但这应该有效......

ids = [5, 4, 1, 2]

products = Product.where(id: ids).order('array_position(?, products.id)', ids)
Run Code Online (Sandbox Code Playgroud)

  • 更正的答案`products = Product.where(id: ids).order("array_position(ARRAY[#{ids.join(',')}], products.id)")` (3认同)
  • `products.id::int`。Rails 的 id 现在是 big int (2认同)