2016-07-05 6 views
0

私は、多くの 'Students'を持つ 'Courses'エンティティを持っています。私は、学生名が 'a%'のようなコースを取得したいです。クエリのような場所で:Rails:Active Record has_manyは、常に最初のクエリからフィルタリングされた結果のみを取得します。

courses = Course.students.where('...').to_a 

は、私が唯一の1コース(A)と、多くの学生(S1、S2、S3 ...)を持っていると言うことができます、そこから2つだけの学生(S1、S2)で始まる名前を持ちます文字 'a'。だから私は結果として2つのコースが必要です:A - > S1、A - > S2。今度は、コースを繰り返して、「コース。受講者」はすべての生徒になります(アクティブレコードの遅延呼び出しとすべての生徒の収集)。最初のコースの生徒(コース。最初の生徒)には、S1生徒と2生徒のみが含まれます。学生S2 in。基本的に私は、問い合わせの後にアクティブレコードを放棄し、学生に結合クエリだけが返されるようにしたい。

答えて

2

あなたは

result = Courses.includes(:students).where("students.name LIKE 'a%'").to_a

をしようとするとあなたは1コースを取得していますが、次の

result.first.students

を試す場合は、 ''

を開始する名前を持つ2人の生徒の配列を取得
関連する問題