以下の表を使用して問題を説明したいと思います。
university = University.where('class.name' => 'example', 'class.students.age' => '21').includes(:class, :student)
University
id
class.id
name
Class:
id
student.id
name
MaximumStudents
Student:
id
name
age
ご覧のとおり、テーブルはUniversityテーブルを参照していClassます。テーブルはClassテーブルを参照しStudentます。
exampleというクラスがあり、学生の年齢が高い大学を取得したいと考えています21。私はそれが奇妙だと知っていますが、それは私の問題を示しています:D
を取得するためのクエリを取得できませんStudent。「「学生」という名前の関連付けが見つかりませんでした」というエラーが常に表示されます
Studentテーブルを使用せずに次のようにするとうまくいきます
university = University.where('class.name' => 'example').includes(:class)