Установить current_user.id в ассоциации (дублировать с помощью amoeba)
У меня есть список задач и модель задач.
Я использую gem amoeba, чтобы дублировать один список задач со связанными задачами. Оба 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
Задачи также правильно копируются, но идентификатор пользователя не обновляется в скопированных задачах (только список задач). Я не могу использовать current_user.id в модели с:set.
Вот мне и интересно, как мне этого добиться?
1 ответ
Вот как я решил проблему: вместо того, чтобы использовать 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