我正在编写一个 REST api 来返回任务列表。
这是我的一组数据:
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) SELECT
tasks
.* FROMtasks
WHEREtasks
。parent_id
= 0任务负载 (0.3ms) SELECT
tasks
.* FROMtasks
WHEREtasks
。parent_id
输入 (1, 2)
所以它实际上确实运行了查询,但是,它没有将结果放入我的对象中。响应中显示的唯一 2 个任务是 parent_id = 0 的任务。
难道我做错了什么?我希望这个子任务也出现在响应中。