我在用户和课程之间有一个关系模型(“课程”,如“我正在学习统计学课程”)。一个班级有一个老师(一个用户)和许多学生(也是用户);用户可以教授许多课程,但也可以注册许多课程。
我相信在我的模型中建立这种关系的正确方法是:
class User < ActiveRecord::Base
has_many :taught_courses, class_name: "Course"
has_and_belongs_to_many :enrolled_courses, class_name: "Course"
end
class Course < ActiveRecord::Base
belongs_to :teacher, class_name: "User"
has_and_belongs_to_many :students, class_name: "User"
end
但我不知道如何在我的数据库中进行设置(我是新手)。
编辑:
我有一个相当于这样的迁移:
def change
create_table :courses_users do |t|
t.belongs_to :course
t.belongs_to :user
end
create_table :courses do |t|
t.string :name
t.integer :teacher_id
t.timestamps
end
end
但是当我尝试在控制台中创建一个新用户时,我收到一个错误user_id
:
irb(main):007:0> u.taught_courses.create(name: "Foo bar")
(0.0ms) SAVEPOINT active_record_1
(0.1ms) ROLLBACK TO SAVEPOINT active_record_1
ActiveRecord::UnknownAttributeError: unknown attribute: user_id
这应该在哪里user_id
?或者我应该更具体地了解我的外键?
编辑 2
事实证明,我还必须指定用户和课程之间foreign_key: "teacher_id"
的has_many
关系才能使其工作。
对不起,误导性的问题。