Ruby On Rails - многие ко многим между одной и той же таблицей - PullRequest
1 голос
/ 23 июня 2010

Я пытаюсь создать довольно сложные отношения в Rails, и у меня возникают некоторые проблемы с поиском наилучшего способа сделать это.У меня есть таблица «Пользователи», в которой каждый пользователь выступает в роли учителя и ученика.Я хотел бы иметь has_many "студентов" (которые также являются просто пользователи) и has_many "учителя" (которые также являются просто пользователи).Я не хочу делать подклассы или наследование одной таблицы.Я просто хочу двух разных many_to_many между пользователями.Каков наилучший способ сделать это?Это плохая идея?Есть ли лучшее решение?

1 Ответ

6 голосов
/ 23 июня 2010

вы должны иметь возможность настроить модель назначения и использовать ее так же, как и любые другие отношения «многие ко многим»:

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

Я бы поменял названия заданий, чтобы они были немного менее похожими и более значимыми, но концепция должна остаться прежней

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...