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

Возможно ли group.tasks?

-1
bax 22 Сен 2018 в 06:43

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"
1
Austio 22 Сен 2018 в 04:10