Подотношение Rails ActiveRelation

Я новичок в рельсах, и у меня есть вопрос о доступе к отношениям отношений в ActiveRecord.

Рассмотрим этот псевдокод:

class Organisation
has_many: :projects

class Project
has_many: :tests

class Test
belongs_to: project

Эффективно 3 уровня. Мне нужно получить доступ к тестам для конкретной организации, хотя я могу пройти только так глубоко, как проекты.

ie

@organisation = Organisation.find(params[:id], :include => [:projects])

На самом деле, мне нужно сделать что-то вроде

@organisation.projects.scripts.all

но из того, что я читаю, это невозможно. Итак, какое решение для этого?

Спасибо, парни


person Cheyne    schedule 30.06.2012    source источник


Ответы (1)


Вы хотите что-то вроде этого:

@organisation = Organization.includes(:projects => :tests).find(params[:id])
@organization.projects.collect(&:tests)

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

person Veraticus    schedule 30.06.2012