为教师网站设置模型

时间:2013-07-22 09:47:58

标签: ruby-on-rails model conceptual

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

我希望用户注册(我没有特别的方式,但我假设我会选择一个更受欢迎的红宝石宝石)。然后他们可以选择成为导师或学生或两者兼而有之。 我应该建立一个导师模型,学生模型并让他们从认证中继承基本信息吗?或者更好的是拥有一个用户模型,其中包含所有基本信息(生日,性别),然后让学生/导师从中继承?

2 个答案:

答案 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)

我认为StudentTutor最好从您的User模型继承。您可以选择在rails中使用STI将数据保留在同一个数据库表中。

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