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
我的项目中有 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