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