2010-06-23 82 views
0

我想在Rails中創建一個有點複雜的關係,並且在尋找最佳方式時遇到了一些問題。我有一個用戶表,其中每個用戶充當老師和學生。我想要一個has_many的「學生」(也只是用戶)和一個has_many的「老師」(這也只是用戶)。我不想做任何子類化或單個表繼承。我只想在用戶之間使用兩個不同的many_to_many。做這個的最好方式是什麼?這是一個壞主意嗎?有更好的解決方案嗎?Ruby On Rails - 同一表之間的多對多

+1

這不是一個壞主意,你會遵循多對多的標準東西,但使用相同的類而不是一個不同的類。有一個名爲class_name或:class的關係修飾符。 – 2010-06-23 02:05:15

回答

5

你應該能夠建立一個分配模型,並使用它,就像任何其他的許多一對多的關係:

class User < ActiveRecord::Base 
    has_many :student_teacher_assignments, :class_name => "StudentTeacherAssignment", :foreign_key => "student_id" 
    has_many :teachers, :through => :student_teacher_assignments 
    has_many :teacher_student_assignments, :class_name => "StudentTeacherAssignment", :foreign_key => "teacher_id" 
    has_many :students, :through => :teacher_student_assignments 
end 

class StudentTeacherAssignment < ActiveRecord::Base 
    belongs_to :student, :class_name => "User" 
    belongs_to :teacher, :class_name => "User" 
end 

我想改變分配的名稱是少一點相似,更有意義,但概念應該保持不變

+0

啊,那差不多是我想要做的,但是我弄錯了。這很好。謝謝! – 2010-06-23 02:21:43