如果2条记录具有相同的列值,如何在按另一列对其进行排序之后按id升序对记录进行排序? -滑轨

时间:2020-01-02 09:59:51

标签: ruby-on-rails ruby sorting activerecord

我有一个这样的产品表

id name display_order
------------------------
1   A    2
2   B    4
3   C    4
4   D    1

通过display_order desc订购后,结果如下:

Product.order(display_order: :desc)
id name display_order
------------------------
3   C    4
2   B    4
1   A    2
4   D    1

现在,我想保持此顺序,但是如果两个或多个产品具有相同的display_order,我希望按照如下所示的ID升序对它们进行排序:

id name display_order
------------------------
2   B    4
3   C    4
1   A    2
4   D    1

您知道任何rails或ruby语法或算法都可以帮助我实现此结果吗?预先感谢!

1 个答案:

答案 0 :(得分:0)

您可以使用SQL轻松做到这一点:

Product.order(display_order: :desc, id: :asc)

它被翻译成类似的东西

select products.* from products order by products.display_order desc, products.id asc