Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 基于多个属性订购项目_Ruby On Rails - Fatal编程技术网

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)