Ruby On Rails – 同一个表之间的多对多

我试图在Rails中创建一个有点复杂的关系,并且在找到最佳方法时遇到一些麻烦。 我有一个Users表,其中每个用户都充当教师和学生。 我想有一个has_many“学生”(也只是用户)和一个has_many“老师”(也只是用户)。 我不想做任何子类或单表inheritance。 我想在用户之间想要两个不同的many_to_many。 做这个的最好方式是什么? 这是一个坏主意吗? 有更好的解决方案吗?

您应该能够设置任务模型并像使用任何其他多对多关系一样使用它:

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 

我会将赋值的名称更改为更不相似且更有意义,但概念应该保持不变