2012-09-08 119 views
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) 

回答

2

首先跟隨它工作正常,注意,這不是一個好因爲這是Ruby中的一個保留字(用於類),因此可能會造成麻煩,因此可以命名模型「類」。

旁白:在University模型,你需要指定到Student模型這樣的關係:

has_many :students, :through => :class 

然後你就可以得到你想要像這樣的關係是什麼:

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

謝謝。這工作。以上實際上並不是我的申請。我不應該上課。 – Decrypter