0

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

しかし、私が読んでいることから、それは不可能です。それで、これに対する解決策は何ですか?

みんなありがとう

4

1 に答える 1

1

あなたはこのようなものが欲しいです:

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

これにより、1つの組織とそのすべてのプロジェクトおよびテストが熱心に読み込まれ、その組織に関連するすべてのプロジェクトのすべてのテストが収集されます。

于 2012-06-30T01:14:47.200 に答える