РЕДАКТИРОВАТЬ - После просмотра has_draft, который является вариантом 2 - я бы на 100% согласился с этим.
У вас есть 3 варианта здесь:
Вариант 1 -
Вы можете сохранить данные в сеансе и соответственно извлечь их.
Вариант 2 -
Вы можете использовать черновой плагин / драгоценный камень, например "has_draft", который будет клонировать вашу модель.структурировать, создавать новую таблицу и т. д. и обрабатывать все это за вас.
https://github.com/rubiety/has_draft
Вариант 3 -
(не уверен, будет ли это работать точно, но я предпочитаю)
Вы можете продублировать свою страницудобавьте новое поле в модель вашей страницы под названием «duplicate_of» и, когда вы нажмете свое действие редактирования, создайте дубликат, передавая id исходной страницы.Затем в действии обновления проверьте, является ли он дубликатом, и если это так, перезапишите оригинал и удалите дубликат.
def edit
@original = User.find(params[:user_id]).pages.find(params[:id])
@clone.duplicate_of = @original.id
@clone.active = false
@page = User.find(params[:user_id]).pages.create(@clone.attributes)
end
def update
#you will need to add something here to check if its a duplicate
#to begin with and if it is...
@page = User.find(params[:user_id]).pages.find(params[:id])
@original = User.find(params[:user_id]).pages.find(@page.duplicate_of)
if @original.update_attributes(params[:page])
@page.destroy
end
end