Я создаю веб-приложение, которое состоит из школ, курсов, студентов и учителей.
В школе может быть много курсов, а в курсе один учитель и много учеников.
Проблема, с которой я сталкиваюсь, заключается в том, что один пользователь может быть преподавателем одного курса, но студентом другого курса (или даже студентом или преподавателем курса в другой школе). Я не хочу создавать модель для учителей и отдельную модель для студентов, потому что я хотел бы отслеживать всех своих пользователей в одном месте. Существует таблица зачисления, в которой перечислены пользователи, зачисленные на курс в качестве студентов.
Я бы хотел сделать что-то вроде следующего:
class School < ActiveRecord::Base
has_many :courses
has_many :students :through enrollments
has_many :teachers :through courses
end
class Course < ActiveRecord::Base
has_one :teacher
belongs_to :school
has_many :students :through enrollments
end
class User < ActiveRecord::Base
has_many :courses
has_many :schools
end
Но если у меня есть только таблица пользователей, а не две отдельные таблицы учеников и учителей, это не сработает.
Вместо этого мне пришлось бы сделать что-то вроде
class School < ActiveRecord::Base
has_many :users [that are teachers]
has_many :users :through enrollments [that are students]
end
Как я могу настроить свою модель и ассоциации, чтобы эта работа работала?
Спасибо.