Rails:将另一个用户分配给现有条目(关联)

Rails: Assigning another user to an excisting entry (associations)

我的项目中有 2 个模型。 1 是用户,1 是课程。 一个用户有多门课程 课程有很多用户。 主要问题是我不知道如何在不创建新课程的情况下将用户分配给课程。

user = User.first 
course = Course.new(title:"course01")

我的输出将类似于

Course id: 2, title: "course01", created_at: "2016-03-20 07:05:23",            
updated_at: "2016-03-20 07:05:23", user_id: 1>

现在我不知道如何将另一个用户添加到同一课程。

user = User.second
?

假设在将用户分配到课程时创建了一个新的 'UserCourseAssignment'。

您可以使用属性 user_id 和 course_id 创建一个新的 UserCourseAssignment 模型来存储哪些用户被分配到哪些课程。每次将用户分配到课程时,这个新 table 都会有一个新条目。

用户模型

has_many :user_course_assignments

has_many :courses, through: :user_course_assignments

课程模型

has_many :user_course_assignments

has_many :users, though: :user_course_assignments

UserCourseAssignment 模型

belongs_to :user
belongs_to :course

编辑: 我认为您目前在课程模型中有 user_id 属性。实施 has_many :through 关联后就不需要它了。

courses table 中删除 user_id,不需要

为 HABTM 创建连接 table

create_table :users_courses, id: false do |t|
  t.references :course
  t.references :user
end

user.rb文件中

has_and_belongs_to_many :courses

course.rb文件中

has_and_belongs_to_many :users

创建新课程后

course = Course.create(title:"course01")
users = User.all or whatever you need to assign to same course
users.each do |user|
  course.users << user ##assign 
end

在rails控制台中

course = Course.first or Course.find(1) or whatever you want 
course.users << User.find(1) or whatever you want