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