0

我希望使用下表来解释我的问题:

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)
4

1 回答 1

2

首先,请注意,将模型命名为“类”不是一个好主意,因为这是 Ruby 中的保留字(用于类),这可能会引起麻烦。

除此之外:在University模型中,您需要指定与Student模型的关系,如下所示:

has_many :students, :through => :class

然后你可以通过这样的关系得到你想要的:

university = University.where('class.name' => 'example', 'students.age' => 21).includes(:class, :students)
于 2012-09-08T23:25:56.210 回答