Установить 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
Другие вопросы по тегам