2011-04-27 38 views
0

我正在使用Ruby on Rails(特別是ActiveRecord),我試圖決定是否使用多個級別鏈接我的模型是一個好主意。模型中的多重級別的have_many

class Student < ActiveRecord::Base 
    has_many :student_sections 
    has_many :sections, :through => :student_sections 
    has_many :courses, :through => :sections 
end 

看起來這樣會工作,但我沒有很多ActiveRecord的經驗。有沒有理由不這樣做?

回答

2

這是好的,但這些課程協會實際上是唯一一個「讓」關聯中,你應該記住(而不是「get和set」)。我的意思是,你可以說

@ student.courses

獲得的課程列表,但你不能這樣做(做新的修正之後)

@ student.courses < < @course

由於rails沒有在學生和課程之間進行必要的連接所需的部分信息。

0

您需要添加:源屬性

has_many :sections, :through => :student_sections, :source => 'your_source' 
+0

他爲什麼需要添加一個源代碼?在這種情況下,Rails應該能夠自動確定關聯。 – 2011-04-27 11:50:51

+0

rdoc writed:「指定has_many:through查詢使用的源關聯名稱,僅當從關聯中不能推斷名稱時才使用has_many:訂閱者,:through =>:訂閱將查找:訂閱者或訂閱者訂閱,除非提供:來源。「 – Neo 2011-04-27 13:12:49

+0

我的模型已設置好,因此我不需要使用:source,但謝謝。 – 2011-04-27 21:37:49