我有这个问题:
case_timeline = Case.select('cases.*, case_steps.*, tasks.*, task_statuses.*')
.joins(case_steps: { tasks: :task_status} )
.where('cases.id = ?', case_1.id)
.where('task_statuses.task_status_name in (?)', ['Open', 'Overdue', 'Completed'])
.order('tasks.end_date DESC')
completed_timeline =
case_timeline
.select{|task| task.task_status_name == "Completed" }
我如何按日期订购?我试过这个:
completed_timeline =
case_timeline
.select{|task| task.task_status_name == "Completed" }
.order('end_date')
但是它给出了错误:
undefined method `order' for #<Array:0x000000051da2e0>
答案 0 :(得分:5)
在调用select之前,您需要调用对象的order方法。
completed_timeline =
case_timeline.order('end_date')
.select{|task| task.task_status_name == "Completed" }
这是因为case_timeline返回一个知道如何响应顺序的ActiveRecord对象,其中调用select返回一个不知道如何响应顺序的Array对象。