Tieni traccia delle modifiche ai dati del tuo modello con Paper Trail Gem

La documentazione cartacea ci consente di tenere traccia di tutte le modifiche ai dati del modello ai fini della modifica e del controllo delle versioni. Usando questo gioiello, possiamo vedere come appare un modello, in ogni fase del suo ciclo di vita e possiamo riportarlo a qualsiasi versione dei dati del modello e possiamo persino annullare tutte le modifiche dopo che un record è stato distrutto in modo da per ripristinarlo completamente.

gemma 'paper_trail' esegui bundle install per installarlo

Dopo l'installazione del bundle è possibile eseguire il comando seguente per aggiungere la tabella delle versioni al database

bundle exec rails genera paper_trail:install
bundle exec rake db:migrate

Aggiungi il metodo has_paper_trail ai tuoi modelli per il monitoraggio.

class Prodotto < ActiveRecord::Base has_paper_trail end

Se stai utilizzando un metodo current_user, puoi tenere traccia di chi è responsabile di una particolare modifica tramite il callback seguente

class ApplicationController before_action:set_paper_trail_whodunnit end


Caratteristiche della gemma della traccia cartacea

Memorizza ogni singola modifica avvenuta nel modello come creazione, aggiornamento e distruzione
Non memorizza alcun aggiornamento a meno che non siano apportate modifiche
Ti consente di ottenere ogni versione inclusa quella attuale e anche una volta distrutta

Utilizzo di base

Ora hai un metodo delle versioni che restituisce tutte le modifiche in un particolare modello

prodotto = Prodotto.trova 2 prodotti.versioni
# [, , ...]

In base alla versione puoi trovare le modifiche avvenute in un modello

v = prodotto.versioni.ultimo

v.event # restituisce aggiorna/crea/distruggi
v.whodunnit #it restituisce un ID utente che ha fatto ciò
v.reificare il prodotto com'era prima dell'aggiornamento

puoi navigare tra le versioni utilizzando i metodi previous_version e next_version

prodotto = prodotto.versione_precedente

prodotto = prodotto.next_version #it restituisce nil se non è presente alcun oggetto

product.versions.last.whodunnit #it restituisce l'utente che ha apportato la modifica specifica

RailsCarma ha fornito servizi di sviluppo di ruby on rails degli ultimi 8 anni I nostri sviluppatori sono esperti nel fare tutti i tipi di Sviluppo web di Ruby on Rails lavorare e gestire qualsiasi tipo di progetto. Contattaci per saperne di più sulle nostre capacità di sviluppo e sui progetti che possiamo gestire.

Articoli correlati

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

it_ITItalian