所以我有一个项目管理系统,其中用户和项目有一个has_and_belongs_to_many关联。登录用户可以创建项目,它只列出他们所属的项目。
这是我的问题,在创建项目时,我需要它将已创建的,当前登录的创建项目的用户添加到此项目的project_model.user数据库。
我该怎么做?我会使用像project_model.user.create!(current_user)?
这样的东西这基本上是我在这个项目中必须处理的,能够将数据库中已有的用户添加到某些项目中,特别是添加到他们的project_models.users数据库中。
(是的,project_model是它应该只是项目的实际名称。它是一个小组项目而且它不是我的决定)
答案 0 :(得分:1)
当你创建项目时,我想你正在做这样的事情:
ProjectModel.create(project_model_params)
您可以从current_user
的项目协会构建项目,而不是以这种方式创建项目:
@new_project = current_user.project_models.build(project_model_params)
if @new_project.save
...
这样,新项目将在最初保存时与该用户建立关联。
假设您已经有一个项目并且只想添加一个新用户,您可以按照以下步骤进行:
# First, find the project you want to add users to
@existing_project = ProjectModel.find(params[:id])
# Next, find the user you want to add
@user = User.find(params[:user_id]) # again - find the user however you like
# Finally, add the user to the project
@existing_project.users << @user
# note that this will auto-save the association.
# There is no need to call @existing_project.save afterwards