Track Changes To Your Model’s Data with 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 ‘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.

Artículos Relacionados

Deja un comentario

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

Spanish
English
English
Japanese
German
French
Spanish

envíanos whatsapp

Salir de la versión móvil