我按日期列然后按外键 ID 列对 Active Record 关系进行排序,但第二次排序没有生效。
recs.order('date, parent_id')
recs.order('date asc, parent_id asc')
etc.
当第一列是日期时,所有预期的排序都不起作用。它根本不会在日期内对第二列进行排序。
这按日期列而不是按 parent_id 列排序,例如:
01/01/2015 ParentB
01/01/2015 ParentB
01/01/2015 ParentA
01/01/2015 ParentB
20/06/2015 ParentA
...
您看到记录不是按带日期的 parent_id 排序的。使用 Rails 4.2.3、Postgres 9。日期属性在迁移中定义为日期类型,因此不应包含时间部分。 顺序应该是:
01/01/2015 ParentA
01/01/2015 ParentB
01/01/2015 ParentB
01/01/2015 ParentB
20/06/2015 ParentA
...
(假设 ParentA 显示 parent_id 1,ParentB 显示 parent_id 2)
最佳答案
在 Rails 4 中,你可以这样做
Model.order(column1: :asc, column2: :desc)
更多来自 Rails Guides
Client.order(orders_count: :asc, created_at: :desc)
# OR
Client.order(:orders_count, created_at: :desc)
# OR
Client.order("orders_count ASC, created_at DESC")
# OR
Client.order("orders_count ASC", "created_at DESC")
如果您想多次调用订单,例如在不同的上下文中,新的顺序将追加之前的顺序
Client.order("orders_count ASC").order("created_at DESC")
# SELECT * FROM clients ORDER BY orders_count ASC, created_at DESC
关于ruby-on-rails - 按日期排序,然后按 ID,而不是按第二列排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32373528/