Я думаю, что важно иметь метод " undo " ala gmail при уничтожении записей вместо отображения раздражающего всплывающего окна, которое говорит: " Вы уверены? ».
Способ, которым я это реализовал, заключается в том, чтобы в модели был столбец метки времени «Удален_кат», который получает метку времени при вызове метода destroy
.
def destroy
@foo = Foo.find(params[:id])
@foo.update_attribute(:deleted_at, Time.now)
...
end
К возврат / отмена Я просто установлю тот же столбец на ноль
def revert
@foo = Foo.find(params[:id])
@foo.update_attribute(:deleted_at, nil)
...
end
Мне просто нужно добавить условие, чтобы отфильтровывать «удаленные» foos, когда я вызываю метод find. Возможно, установите cron или фоновую задачу, чтобы через некоторое время действительно уничтожить «удаленные» foos.
Работает для меня и прост в реализации, но мне интересно, есть ли лучший способ реализовать эту функцию? Может быть, есть плагин или гем, который обеспечивает это, о котором я не знаю?