0

我想知道在 Ruby on Rails 中为辅导网站设置模型的最佳方法是什么。

我希望用户注册(我没有特别的想法,但我假设我会选择一种更流行的红宝石宝石)。然后他们可以选择成为导师或学生或两者兼而有之。我应该制作导师模型、学生模型并让他们从身份验证中继承基本信息吗?或者最好有一个用户模型,其中所有基本信息(生日,性别)都在其中,然后让学生/导师从中继承?

4

2 回答 2

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

通过这种方式,用户可以轻松地成为导师和学生,并且只需要共享信息。如果需要,我可能会插入专门的导师/学生模型。

于 2013-07-22T11:57:23.050 回答
0

我认为从您的模型中继承Student和继承更好。您可以选择仍然使用 Rails 中的 STI 将数据保留在同一个数据库表中。TutorUser

这种方法将确保在您的域中有明确的职责分离,同时重复使用相同的身份验证(以及以后的授权)流程。

于 2013-07-22T09:52:58.570 回答