Paper Trail nos permite rastrear todos los cambios en los datos del modelo con el fin de editarlos y versionarlos. Al usar esta gema, podemos ver cómo se ve un modelo, en cada etapa de su ciclo de vida y podemos llevarlo a cualquier versión de los datos del modelo e incluso podemos deshacer todos los cambios después de que se haya destruido un registro para que para restaurarlo por completo.
joya ‘paper_trail’ ejecute la instalación del paquete para instalarlo
Después de la instalación del paquete, puede ejecutar el siguiente comando para agregar la tabla de versiones a su base de datos
Los rieles ejecutivos del paquete generan paper_trail: instalar
paquete ejecutivo rake db:migrar
Agregue el método has_paper_trail a sus modelos para realizar un seguimiento.
clase Producto < ActiveRecord::Base has_paper_trail end
Si está utilizando un método current_user, puede rastrear quién es responsable de un cambio particular mediante la siguiente devolución de llamada
clase ApplicationController before_action: set_paper_trail_whodunnit fin
Características de la joya del rastro de papel.
Almacena todos y cada uno de los cambios ocurridos en el modelo, como crear, actualizar y destruir.
No almacena ninguna actualización a menos que haya modificaciones.
Le permite obtener todas las versiones, incluida la real e incluso una vez destruida.
Uso básico
Ahora tienes un método de versiones que devuelve todos los cambios en un modelo en particular.
producto = Producto.buscar 2 productos.versiones
# [, , ...]
Según la versión puedes encontrar los cambios que ocurrieron en un modelo.
v = producto.versiones.última
v.event # devuelve actualizar/crear/destruir
v.whodunnit #it devuelve una identificación de usuario que hizo esto
v.reificar el producto como estaba antes de la actualización
Puedes navegar por las versiones utilizando los métodos de versión_anterior y de versión_siguiente.
producto = producto.versión_anterior
producto = producto.next_version #it devuelve nil si no hay ningún objeto
product.versions.last.whodunnit #it devuelve el usuario que realizó el cambio particular
RailsCarma ha estado proporcionando servicios de desarrollo de Ruby on Rails de los últimos 8 años. Nuestros desarrolladores están bien versados en hacer todo tipo de Desarrollo web Ruby on Rails trabajar y manejar cualquier tipo de proyecto. Contáctenos para saber más sobre nuestras habilidades de desarrollo y los proyectos que podemos manejar.