Ruby on Rails Active Record: цепочка из 3 методов не работает - PullRequest
0 голосов
/ 22 сентября 2018

Я студент, работающий над проектом 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

Table Relationships

Is group.tasks возможно?

1 Ответ

0 голосов
/ 22 сентября 2018

Да, это должно работать из коробки.

Один из лучших способов выяснить это - посмотреть на 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...