Rails ActiveRelation子关系

时间:2012-06-30 00:33:46

标签: ruby-on-rails activerecord active-relation

我是rails的新手,对于在ActiveRecord中访问关系关系有疑问。

考虑这个伪代码:

class Organisation
has_many: :projects

class Project
has_many: :tests

class Test
belongs_to: project

有效3级。我需要访问特定组织的测试,尽管我只能像项目一样深入。

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

真的,我需要做的就是

@organisation.projects.scripts.all

但从我正在阅读的内容来看,这是不可能的。那么,解决方案是什么?

谢谢你们

1 个答案:

答案 0 :(得分:1)

你想要这样的东西:

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

这将急切地加载一个组织及其所有项目和测试,然后它将收集与该组织相关的所有项目的所有测试。