В консоли Rails как найти записи, которые ниже в таблице - PullRequest
0 голосов
/ 17 ноября 2018

У меня есть 3 модели:

  1. Рабочая область (имеет много проектов)
  2. Проект (принадлежит рабочей области и имеет много задач)
  3. Задание (принадлежит проекту)

В консоли Rails я могу сделать;

w = Workspace.find(1)
w.projects.all

Возвращает все проекты, которые принадлежат рабочей области с Id = 1. Как найти все задачи, которые принадлежат рабочей области с Id = 1?

Я пытался:

w.projects.tasks.all 

но это не работает

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

В соответствии с описанием, упомянутым в посте, вам нужно найти, что задача принадлежит определенному проекту, который, в свою очередь, принадлежит определенному рабочему пространству.

 w.projects.tasks.all

Приведенная выше строка не будет работать как w.projects будет возвращать коллекцию ActiveRecord, и для ассоциации для работы вам понадобится объект.

Если вы написали необходимую ассоциацию, как упомянуто @Abhilash, нижеупомянутый запрос будет достигнут, если вам понадобится.

#1st solution
project_tasks = w.includes(:projects => [:tasks]) #eager-loading both project and tasks
#2nd solution
project_tasks = w.projects.map {|project| project.tasks } # will return all tasks

Надеюсь, это очистит ваш запрос !!

0 голосов
/ 17 ноября 2018

В вашей модели workspace используйте следующую ассоциацию:

has_many :tasks, through: :projects

Кроме того, я рекомендую вам проверить направляющие Rails

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...