我希望使用下表解释我的问题:
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)
答案 0 :(得分:2)
首先,请注意,将模型命名为“Class”不是一个好主意,因为这是Ruby中的保留字(对于类),这可能会导致麻烦。
除此之外:在University
模型中,您需要指定与Student
模型的关系,如下所示:
has_many :students, :through => :class
然后你可以用这样的关系得到你想要的东西:
university = University.where('class.name' => 'example', 'students.age' => 21).includes(:class, :students)