如何在数组中进行排序

时间:2013-07-27 17:33:53

标签: ruby-on-rails ruby-on-rails-3.2

我有这个问题:

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>

1 个答案:

答案 0 :(得分:5)

在调用select之前,您需要调用对象的order方法。

completed_timeline =
case_timeline.order('end_date')
.select{|task| task.task_status_name == "Completed" }

这是因为case_timeline返回一个知道如何响应顺序的ActiveRecord对象,其中调用select返回一个不知道如何响应顺序的Array对象。