0
我有兩個表之間的多對多關係,條件表示不同的角色。在軌道上的關係
class Course < ActiveRecord::Base
...
has_many :course_mentors, :conditions => { :type_str => "mentor" }, :class_name => CourseUser
has_many :mentors, :through => :course_mentors, :source => :user
has_many :course_enrollees, :conditions => { :type_str => "enrollee" }, :class_name => CourseUser
has_many :enrollees, :through => :course_enrollees, :source => :user
...
end
爲了獲取自身的關聯,我可以簡單地做@ course.enrollees的一個內容,@ course.mentors等,但有時它會方便能夠同時獲得參保和導師一起。
我有許多不同的關聯,這使得爲單個關聯的每個組合創建附加關聯是不切實際的。人們總是可以做
(@course.enrollees + @course.mentors).sort
然而,這會導致對數據庫的兩個請求和可能重複的條目。
我也調查了關聯的merge
函數,但是這只是返回一個空的關係。
什麼是最好的軌道這樣做?
這是*完美*,正是我們所尋找的東西。儘管如此,這是如何工作的?是否有一個數據庫請求或n個不同的關係? –
現在得到的錯誤:未定義的方法'of_type'爲# 任何想法? –
好吧有點排序它,我用另一個通過關係調用:用戶,而不是關係:course_users到連接表。 現在,您提供的代碼將返回聯接模型的對象,而不是關係(用戶)另一側的模型。我怎樣才能做到這一點? –