2013-10-12 86 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