我的模型ticket
具有priority
,status
和target_date
我想按照priority
的升序和target_date
的升序列出门票,并从status
未解决的门票开始#34;
我该怎么做?
priority
可以包含值P1,P2和P3。
status
可以"创建","进行中"或"已解决"
答案 0 :(得分:0)
您可以将 case 语句用于状态,并将其与 order 方法中的 priority 和 target_date 混合使用。
范围可能如下所示:
scope :ordered_by_status_priority_target_date, -> {
order("case status
when 'resolved' then 2
else 1
end, priority, target_date")
}
答案 1 :(得分:0)
这就是你要搜索的内容。
Ticket.where.not(status: :resolved).order(priority: :asc, target_date: :desc)
或者您可以省略第一个实例上的asc
并默认将其排序为优先级的asc,这将是
Ticket.where.not(status: :resolved).order(:priority, target_date: :desc)