我想知道在 Ruby on Rails 中为辅导网站设置模型的最佳方法是什么。
我希望用户注册(我没有特别的想法,但我假设我会选择一种更流行的红宝石宝石)。然后他们可以选择成为导师或学生或两者兼而有之。我应该制作导师模型、学生模型并让他们从身份验证中继承基本信息吗?或者最好有一个用户模型,其中所有基本信息(生日,性别)都在其中,然后让学生/导师从中继承?
我想知道在 Ruby on Rails 中为辅导网站设置模型的最佳方法是什么。
我希望用户注册(我没有特别的想法,但我假设我会选择一种更流行的红宝石宝石)。然后他们可以选择成为导师或学生或两者兼而有之。我应该制作导师模型、学生模型并让他们从身份验证中继承基本信息吗?或者最好有一个用户模型,其中所有基本信息(生日,性别)都在其中,然后让学生/导师从中继承?
我会有一个包含基本信息的用户模型,然后是这样的:
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
通过这种方式,用户可以轻松地成为导师和学生,并且只需要共享信息。如果需要,我可能会插入专门的导师/学生模型。
我认为从您的模型中继承Student
和继承更好。您可以选择仍然使用 Rails 中的 STI 将数据保留在同一个数据库表中。Tutor
User
这种方法将确保在您的域中有明确的职责分离,同时重复使用相同的身份验证(以及以后的授权)流程。