设置 current_user.id 关联(使用变形虫复制)
Set current_user.id in association (duplicate using amoeba)
我有一个任务列表和一个任务模型。
我正在使用 gem 变形虫来复制一个任务列表及其相关任务。任务列表和任务都有一个 user_id 字段。
默认情况下 user_id 设置为 NULL。
复制时,我希望将 user_id 设置为 current_user.id(来自 Devise)。
我能够使用正确的 user_id 复制任务列表:
@tasklist = Tasklist.find(topic_params[:tasklist])
@tasklist.user_id = current_user.id
@tasklist.tasks.user_id = current_user.id
@tasklist.amoeba_dup.save
任务也被正确复制,但 user_id 未在复制的任务(仅任务列表)中更新。我不能在带有 :set.
的模型中使用 current_user.id
所以我想知道如何实现这一目标?
这是我解决问题的方法:
我没有为关联使用变形虫,而是在关联的控制器中做了一个循环,从而给了我必要的 current_user.id
@topic = Topic.find(params[:id])
@tasklist = Tasklist.find(topic_params[:tasklist])
@tasklist.user_id = current_user.id
@new_tasklist = @tasklist.amoeba_dup
@new_tasklist.save
@tasklist.tasks.each do |task|
task.user_id = current_user.id
task.tasklist_id = @new_tasklist.id
task.amoeba_dup.save
end
我有一个任务列表和一个任务模型。
我正在使用 gem 变形虫来复制一个任务列表及其相关任务。任务列表和任务都有一个 user_id 字段。
默认情况下 user_id 设置为 NULL。
复制时,我希望将 user_id 设置为 current_user.id(来自 Devise)。
我能够使用正确的 user_id 复制任务列表:
@tasklist = Tasklist.find(topic_params[:tasklist])
@tasklist.user_id = current_user.id
@tasklist.tasks.user_id = current_user.id
@tasklist.amoeba_dup.save
任务也被正确复制,但 user_id 未在复制的任务(仅任务列表)中更新。我不能在带有 :set.
的模型中使用 current_user.id所以我想知道如何实现这一目标?
这是我解决问题的方法: 我没有为关联使用变形虫,而是在关联的控制器中做了一个循环,从而给了我必要的 current_user.id
@topic = Topic.find(params[:id])
@tasklist = Tasklist.find(topic_params[:tasklist])
@tasklist.user_id = current_user.id
@new_tasklist = @tasklist.amoeba_dup
@new_tasklist.save
@tasklist.tasks.each do |task|
task.user_id = current_user.id
task.tasklist_id = @new_tasklist.id
task.amoeba_dup.save
end