2013-10-12 64 views
0

我正在写一个REST api来返回任务列表。Rails活动记录急切加载不会加载协会

这是我的一组数据:

id | name   | parent_id 
1 | Ride a horse | 0 
2 | Eat tacos | 0 
3 | Get some cash| 2 

一个任务可以有子任务,所以我做了我的模型自加入:

class Task < ActiveRecord::Base 
    belongs_to :parent, :class_name => 'Task', :foreign_key => 'parent_id' 
    has_many :children, :class_name => 'Task', :foreign_key => 'parent_id' 
end 

我那么渴望负荷我的任务

def index 
    respond_with Task.where(parent_id: 0).includes(:children) 
end 

以下是控制台显示的内容:

任务负荷(0.4ms)选择tasks。*从tasks其中tasksparent_id = 0

任务负载(0.3ms)SELECT tasks。*从tasks WHERE tasksparent_id IN(1,2)

所以它实际上运行查询,但是,它并没有把结果放到我的对象中。回应中显示的唯一两项任务是parent_id = 0的任务。

我做错了什么?我希望这个子任务也可以在响应中。

回答

2

我认为问题在于默认情况下to_json不包含相关对象。 试试这个:

render json: Task.where(parent_id: 0).includes(:children).to_json(include: :children) 
+0

这就是它:)非常感谢! – MonsieurNinja