Настройка моделей для сайта репетитора
Мне интересно, как лучше всего было бы настроить модели в Ruby on Rails для учебного веб-сайта.
Я хотел бы, чтобы пользователи регистрировались (я не имею в виду какой-то конкретный способ, но я предполагаю, что пойду с одним из самых популярных драгоценных камней в рубине). Затем они могут выбрать, быть ли репетиторами или студентами, или и тем, и другим. Должен ли я создать модель для наставников, модель для студентов и заставить их наследовать основную информацию из аутентификации? Или было бы лучше иметь модель пользователя, в которой содержится вся основная информация (день рождения, пол), а затем наследовать от этого ученика / репетитора?
2 ответа
Я думаю, что это лучше для Student
а также Tutor
унаследовать от вашего User
модель. Вы можете сохранить данные в той же таблице базы данных, используя STI в рельсах.
Этот подход обеспечит четкое разделение ответственности в вашем домене при повторном использовании того же процесса аутентификации (и последующей авторизации).
Я хотел бы иметь модель пользователя с базовой информацией, а затем что-то вроде этого:
class User
has_many :course_students
has_many :student_courses, through: :course_students, class_name: "Course"
has_many :course_tutors
has_many :tutored_courses, through: :course_tutors, class_name: "Course"
end
class Course
has_many :course_students
has_many :students, through: :course_students, class_name: "User"
has_many :course_tutors
has_many :tutors, through: :course_tutors, class_name: "User"
end
class CourseStudent
belongs_to :course
belongs_to :student, class_name: "User"
end
class CourseTutor
belongs_to :course
belongs_to :tutor, class_name: "User"
end
Таким образом, пользователь может легко быть репетитором и учеником и просто должен иметь доступ к общей информации. Я бы, вероятно, вставил специальные модели репетитора / ученика, если возникнет такая необходимость.