0

タスクリストとタスクモデルがあります。

gem amoeba を使用して、1 つのタスク リストとそれに関連付けられたタスクを複製しています。Tasklist と Task の両方に 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 を使用できません。

だから私はどうすればこれを達成できるのだろうか?

4

1 に答える 1

0

問題を解決した方法は次のとおりです。アソシエーションにアメーバを使用する代わりに、アソシエーションのコントローラーでループを実行したため、必要な 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
于 2015-07-04T20:57:59.907 に答える