Realice un seguimiento de los cambios en los datos de su modelo con Paper Trail Gem

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 'rastro de papel' 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.

Artículos Relacionados

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

es_ESSpanish