我试图在Rails中创建一个有点复杂的关系,并且在找到最佳方法时遇到了一些麻烦。我有一个用户表,其中每个用户充当教师和学生。我想有一个has_many“学生”(也只是用户)和一个has_many“老师”(也只是用户)。我不想做任何子类或单表继承。我想在用户之间想要两个不同的many_to_many。做这个的最好方式是什么?这是一个坏主意吗?有更好的解决方案吗?
答案 0 :(得分:6)
你应该能够像任何其他多对多关系一样设置任务模型并使用它:
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
我会将作业的名称更改为更不相似且更有意义,但概念应该保持不变