[英]Rails active record eager loading won't load associations
我正在編寫一個REST API來返回任務列表。
這是我的數據集:
id | name | parent_id
1 | Ride a horse | 0
2 | Eat tacos | 0
3 | Get some cash| 2
一個Task可以有子任務,所以我使模型自行加入:
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)SELECT
tasks
。* FROMtasks
WHEREtasks
。parent_id
= 0任務負載(0.3毫秒)SELECT
tasks
。* FROMtasks
WHEREtasks
。parent_id
IN(1、2)
因此它實際上會運行查詢,但是,不會將結果放入我的對象中。 響應中顯示的僅有2個任務是parent_id = 0的任務。
難道我做錯了什么? 我也希望這個子任務也能響應。
我認為問題在於默認情況下to_json不包含相關對象。 嘗試這個:
render json: Task.where(parent_id: 0).includes(:children).to_json(include: :children)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.