rails按任意顺序查询顺序结果

时间:2018-11-01 01:00:56

标签: ruby-on-rails ruby postgresql

我有一个Order模型,该模型具有以下属性:

submitted_date :date
completed_date :date
accepted_date  :date

我使用以下代码块使用这些字段来确定订单状态:

def status
    if completed_date.present?
      "Fulfilled"
    elsif accepted_date.present? && submitted_date.present? && completed_date.blank?
      "Accepted"
    elsif submitted_date.present? && accepted_date.blank? && completed_date.blank?
      "Submitted"
    else
      "Open"
    end
  end

我在构建应用程序时将其完全隔开,但我没有意识到用户希望按以下顺序查看结果:

打开, 已提交, 公认, 已实现

我可能应该使用整数字段作为确定订单状态的枚举,但是我围绕上述结构建立了很多功能。

我想知道是否可以对查询进行排序,以便按上述任意顺序对结果进行排序?

1 个答案:

答案 0 :(得分:1)

我认为以最完整的状态进行订购可以解决问题。未结订单的日期为零,因此应正确订购

Order.order(提交日期::desc,完成日期::desc,接受日期::desc)

:desc/:asc选项和.reverse应该可以解决问题。

对于另一次迭代,一种方法是拥有一个状态机,一个状态枚举列,每个步骤的日期。验证所需条件将使订单前进到下一步