由于某种原因,order方法在我的代码中不起作用。如果我在模型中这样做:
def apple
@tasks_array = self.tasks.to_a
end
使用上面的代码,返回一个数组。但如果我这样做:
def apple
@tasks_array = self.tasks.order('order_number').to_a
end
然后
[]
被退回。下面是应该返回的数组,该数组与我编写的第一段代码一起返回:
[#<Task id: 145, title: "task 1", content: "", created_at: "2013-12-18 18:44:31",
updated_at: "2013-12-18 20:21:11", schedule_id: 79, amount: nil,
time_frame: "2013-12-19 15:00:00", state: "complete", denied: 3,
order_number: 0>, #<Task id: 146, title: "Task 2", content: "",
created_at: "2013-12-18 18:44:31", updated_at: "2013-12-18 20:24:06",
schedule_id: 79, amount: nil, time_frame: "2013-12-27 10:00:00",
state: "complete", denied: 1, order_number: 1>]
我也试过了,但还是不行。
最佳答案
我能想到的唯一解释是:self
尚未保存,或者
执行此语句时,数据库中不存在任务记录
任务记录不再与self关联
但是tasks
的值仍然被缓存。order
涉及一个sql查询,因此需要访问数据库。
这一点的证据是,您只看到在使用order
的情况下,一个sql查询返回到控制台。
另一种方法是,使用Enumerable#sort_by
用例如下:
self.tasks.sort_by {|task| task.order_id}