creo que es importante tener un "deshacer" método ala Gmail al destruir los registros en lugar de mostrar una ventana emergente molesto que dice: "¿Seguro?".¿Cuál es la mejor manera de implementar el estilo de Gmail "deshacer" en Rails?
La forma en que he implementado esto es tener una columna de marca de tiempo "deleted_at" en el modelo que consigue marcado con la fecha cuando destruir método se llama
def destroy
@foo = Foo.find(params[:id])
@foo.update_attribute(:deleted_at, Time.now)
...
end
Para Revert/deshacer voy acaba de establecer la misma columna a cero
def revert
@foo = Foo.find(params[:id])
@foo.update_attribute(:deleted_at, nil)
...
end
voy a tener que añadir una condición para filtrar fuera "borrado" Foos cuando llamo el método de búsqueda. Tal vez establezca una tarea cron o de fondo para destruir realmente los foos "eliminados" después de un tiempo.
Funciona para mí y es fácil de implementar, pero tengo curiosidad acerca de si existe una mejor manera de implementar esta función. Tal vez hay un complemento o una gema que proporciona esto que no conozco.
¿De verdad te importa cuando se eliminó? ¿No es suficiente una bandera? –
Sí, realmente no me importa cuando se eliminó por el momento, pero ese conocimiento podría ser útil en el futuro. De todos modos, creo que las marcas de tiempo son una buena bandera. – JasonOng
Estoy de acuerdo con el sentimiento general.Sin embargo, un problema posible al adelantarse a necesidades como esa es que podría engañar a otros desarrolladores para que busquen dónde se usa actualmente esa información (marca de tiempo). Cuando en realidad no se usa en algún lugar, representa un hilo suelto, que a menudo es frustrante y consume mucho tiempo para los no iniciados. – Magne