Ruby on rails 基于多个属性订购项目
我有一张Ruby on rails 基于多个属性订购项目,ruby-on-rails,Ruby On Rails,我有一张票,它具有优先级、状态和目标日期 我想按优先级和目标日期的升序列出票证,并从状态未“解决”的票证开始 我该怎么做 priority可以具有值P1、P2和P3 状态可以是“已创建”、“正在进行”或“已解决”您可以使用case语句作为状态,并在order方法中将其与优先级和目标日期混合使用 范围可能如下所示: scope :ordered_by_status_priority_target_date, -> { order("case status whe
票
,它具有优先级
、状态
和目标日期
我想按优先级
和目标日期
的升序列出票证,并从状态
未“解决”的票证开始
我该怎么做
priority
可以具有值P1、P2和P3
状态
可以是“已创建”、“正在进行”或“已解决”您可以使用case语句作为状态,并在order方法中将其与优先级和目标日期混合使用
范围可能如下所示:
scope :ordered_by_status_priority_target_date, -> {
order("case status
when 'resolved' then 2
else 1
end, priority, target_date")
}
这就是你正在寻找的
Ticket.where.not(status: :resolved).order(priority: :asc, target_date: :desc)
或者,您可以在第一个实例中省略asc
,并在默认情况下将其按优先级排序为asc,这将是
Ticket.where.not(status: :resolved).order(:priority, target_date: :desc)