我是一名在Rails项目上工作的学生。我建立了如图所示的表关系(我认为!)。
基本上,一个小组有许多项目,而一个项目有许多任务。
使用通用变量名,我可以使group.projects
和projects.tasks
正常工作,但无法group.tasks
工作。这可能吗?我想念什么?
任何帮助将不胜感激。以防万一,这是我的模型(我删除了所有“用户”信息,因为它们不相关):
class Group < ApplicationRecord
has_many :projects
has_many :tasks, through: :projects
end
class Project < ApplicationRecord
belongs_to :group
has_many :tasks
end
class Task < ApplicationRecord
belongs_to :project
end
group.tasks
可能吗?
答案 0 :(得分:1)
是的,这应该可以立即使用。
一种更好的发现方法是查看从这样的查询生成的sql,并查看它是否符合您的需求。我整理了一下,但看起来完全像您想要的。
irb(main):> Group.first.tasks.to_sql
Group Load (0.1ms) SELECT "groups".* FROM "groups" ORDER BY "groups"."id" ASC LIMIT ? [["LIMIT", 1]]
=> SELECT "tasks".* FROM "tasks"
INNER JOIN "projects"
ON "tasks"."project_id" = "projects"."id"
WHERE "projects"."group_id" = 1"