Ruby on rails order_by 两个属性

Ruby on rails order_by two attributes

我有一个 table 并且在这个 table 中我需要 finished 属性,如果它的 null 是第一个但同时我希望将截止日期排序为 asc

def all_cases
    @cases=Case.order("finished ASC NULLS FIRST").order(due_date: :asc).paginate(page: params[:page], per_page: 20) 

    if params[:search]
      @search_term = params[:search]
      @cases = Case.order("finished ASC NULLS FIRST").order(due_date: :asc).casesearch_by(@search_term).paginate(page: params[:page], per_page: 20) 
    else
      @cases = Case.order("finished ASC NULLS FIRST").order(due_date: :asc).order(sort_columnn + " " + sort_direction).paginate(page: params[:page], per_page: 20) 
    end
  end

此代码首先添加了已完成的空值,但未对截止日期进行排序

提前致谢

看你想要什么
Case.order("finished IS NOT NULL").order(due_date: :asc)
这行代码将首先按 due_date 排序,然后按完成属性排序,
所以在你得到的记录前面将是完成为空的记录。

Case.order(due_date: :asc).order("finished IS NOT NULL")
这行代码将首先按 finished 属性排序,然后按 due_date、
排序 所以在你得到的记录前面会记录哪个到期日更小。