當我在rails應用程序中爲自己的ruby黑客攻擊自己的SQL時,我有點不解,所以你的幫助將非常感謝。我有一個模型,如下所示:Rails或SQL來通過幾個模型協會
Timetable
has_many :enrollments
Enrollment
belongs_to :timetable
belongs_to :stream
has_one :course, :through => stream
#Stream & Timetable together are unique for an Enrollment
Stream
has_many :enrollments
belongs_to :course
Course
has_many :streams
即
Timetable 1-* Enrollments *-1 Stream *-1 Course
我試圖找到一條獲取一組與時間表相關課程的最佳途徑,通過它的入學率,通過每個招生的流,有一門課程。
最好是這樣的:
Timetable.courses
嘗試以下沒有運氣
Timetable
has_many :courses, :through => :enrollments, :source => :course
它給了我一個錯誤ActiveRecord::HasManyThroughSourceAssociationMacroError: Invalid source reflection macro :has_one :through for has_many :courses, :through => :enrollments. Use :source to specify the source reflection.
我在Invalid source reflection macro :has_many :through接過來一看,它似乎是相當關。
我也發現http://code.alexreisner.com/articles/has-many-through-habtm.html但我不能完全理解如何在這裏應用這個(儘管它是12am NZT,所以也許這就是原因!)。
幫助,提示甚至答案都會很棒!
SQL很好地訣竅!將試圖包圍我的頭繞軌道的方式:)乾杯@mosch! – 2011-04-27 04:39:38
對於任何未來的讀者,我最終添加了'Stream has_many時間表,:through =>:enrollments'。這可以讓我簡單地調用Course.joins(:streams =>:timetables).where(「timetable_id = ** id **」)。group('timetables.id')'獲得給定時間表的一組課程! :) – 2011-04-27 05:03:19