在查询中包含多个关联

时间:2012-09-08 23:21:02

标签: ruby-on-rails ruby

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

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)

1 个答案:

答案 0 :(得分:2)

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

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

has_many :students, :through => :class

然后你可以用这样的关系得到你想要的东西:

university = University.where('class.name' => 'example', 'students.age' => 21).includes(:class, :students)