2008-12-03 49 views
4

假設我有兩張桌子,一張包含個人信息的學生主列表,以及一組學生在課堂上註冊。這兩個表共享一個共同的列,這是一個唯一標識學生的字符串,但它不是主鍵。如何在rails中進行連接查詢?

假設我想在一個頁面上顯示所有的註冊信息,以及學生的一些個人信息(比如也許是家鄉)。

我明白這將是一個has_many關係。主清單記錄有許多登記。招生屬於一名學生。

class Student < ActiveRecord::Base 
    has_many :enrollments 
end 

class Enrollment < ActiveRecord::Base 
    belongs_to :student 
end 

這是兩者之間的正確關係,如果是這樣,我該如何對共享列進行連接查詢?

回答

6

是ActiveRecord會爲您管理關係,但您也可以在關係中搜索條件時指定連接。例如:

User.find(:all, :joins => :phone_numbers, :conditions => { :phone_numbers => {:name => 'business'} }) 

注意,雖然使用哈希條件聲明只對Rails 2.2

但大多數只是利用與has_many ActiveRecord的關係時應該只是罰款,如上面的答案中提到你會使用這個對象,就好像它是直接在模型上一樣...... @student.enrollments

6

理想的情況下,Rails的期待下面的列:

Student table: 
- id 

Enrollment table: 
- student_id 

這樣,你們的關係應該工作。

然後嘗試一下,放到了Rails控制檯和玩:

@student = Student.first 
@student.enrollments 

看看這個偉大的Rails參考使用協會於:

http://guides.rubyonrails.org/association_basics.html

+0

我想你的意思是「學生」和「招生」表,而不是「學生表」和「招生表」。 – 2008-12-03 18:45:08

0

什麼mwilliams說另外請確保您在按照指南進行多對多關聯時。

0

加入的查詢是通過ActiveRecord關聯自動完成的。

相關問題