代码之家  ›  专栏  ›  技术社区  ›  Joe Cannatti

rubyonrails-同一个表之间的多对多

  •  1
  • Joe Cannatti  · 技术社区  · 14 年前

    我正在尝试在Rails中创建一个有点复杂的关系,并且在找到最好的方法时遇到了一些困难。我有一个Users表,其中每个用户充当教师和学生。我希望有一个有很多“学生”(也只是用户)和一个有很多“老师”(也只是用户)。我不想做任何子类或单表继承。我只想要两个不同的用户之间的多对多。最好的方法是什么?这是个坏主意吗?有更好的解决办法吗?

    1 回复  |  直到 14 年前
        1
  •  7
  •   Geoff Lanotte    14 年前

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

    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