首页 > 解决方案 > 如何按枚举和其他列自定义顺序

问题描述

我正在尝试按两列排序。第一列是枚举字段(状态),第二列是 updated_at 列。

我目前正在按枚举排序,如下所示:

Car.order("
  (status = 1 DESC, updated_at DESC),
   status = 2 DESC,
   status = 3 DESC,
   status = 4 DESC,
   status = 5 DESC,
   status = 6 DESC,
   status = 7 DESC"
)

如果有 3 辆汽车的状态为 1,我希望这 3 辆汽车通过 updated_at 列降序排序。

标签: ruby-on-railsactiverecordruby-on-rails-5.2

解决方案


根据评论。

您可以将 SQL 语句传递ORDER BYorder查询方法:

Car.order(
  'status DESC,
   updated_at DESC,
   CASE WHEN status = 7 THEN 0
        WHEN status = 4 THEN 1
        ...
        END'
)

推荐阅读