Ruby on Rails Active Record:将3种方法链接在一起是行不通的

时间:2018-09-22 03:43:52

标签: ruby-on-rails ruby activerecord

我是一名在Rails项目上工作的学生。我建立了如图所示的表关系(我认为!)。

基本上,一个小组有许多项目,而一个项目有许多任务。

使用通用变量名,我可以使group.projectsprojects.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

Table Relationships

group.tasks可能吗?

1 个答案:

答案 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"