Rails has_many并且属于两次相同的模型

时间:2014-01-23 21:57:06

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 ruby-on-rails-4 ruby-on-rails-3.1

我想知道如何做某事如果有人知道我会很高兴听到。我有以下型号

User
Usertype
Course

我有两种类型的用户 - 学生和老师。 我想要的是两张桌子

CourseTeacher - course_id, teacher_id 
CourseStudent - course_id, student_id

我的用户模型有usertype_id列。所以我想知道在这种情况下如何使用has_many_and_belongs_to因为一切都取决于用户模型中的usertype_id列。

2 个答案:

答案 0 :(得分:1)

我认为类继承是一种更简洁的域逻辑建模方法:

class User < ActiveRecord::Base
end

class Student < User
end

class Teacher < User
end

然后该表格会有一个idtype列,大大简化了您要完成的工作。阅读API文档以了解更多信息:Single Table Inheritance

答案 1 :(得分:0)

如果您没有重构能力,可以尝试使用这种方法:

而不是2个表创建一个:

class CoursesUsers
  belongs_to :course
  belongs_to :user
end

并且在用户模型中决定自己的逻辑(对我来说似乎是多态的)