将current_user.id设置为关联(使用变形虫重复)

时间:2015-07-04 17:35:38

标签: ruby-on-rails model-associations amoeba-gem

我有一个Tasklist&任务模型。

我使用gem amoeba复制一个任务列表及其相关任务。 Tasklist&任务有一个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。我不能在模型中使用current_user.id:set。

所以我想知道如何实现这个目标?

1 个答案:

答案 0 :(得分:0)

以下是我解决问题的方法: 而不是使用amoeba作为关联,我在控制器中为关联做了一个循环,从而给了我必要的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