Suivez les modifications apportées aux données de votre modèle avec Paper Trail Gem

La trace papier nous permet de suivre toutes les modifications apportées aux données du modèle aux fins de leur édition et de leur versionnage. En utilisant cette gemme, nous pouvons voir à quoi ressemble un modèle, à chaque étape de son cycle de vie et nous pouvons le ramener à n'importe quelle version des données du modèle et nous pouvons même annuler toutes les modifications après la destruction d'un enregistrement afin de pour le restaurer complètement.

gemme 'piste de papier' exécutez bundle install pour l'installer

Après l'installation du bundle, vous pouvez exécuter la commande suivante pour ajouter la table des versions à votre base de données

les rails d'exécution du bundle génèrent paper_trail: installer
bundle exec rake db: migrer

Ajoutez la méthode has_paper_trail à vos modèles pour le suivi.

classe Produit < ActiveRecord :: Base has_paper_trail fin

Si vous utilisez une méthode current_user, vous pouvez savoir qui est responsable d'un changement particulier grâce au rappel ci-dessous.

classe ApplicationController avant_action : set_paper_trail_whodunnit fin


Caractéristiques du joyau des traces écrites

Il stocke chaque modification survenue dans le modèle, comme la création, la mise à jour et la destruction.
Il ne stocke aucune mise à jour, sauf en cas de modifications
Il vous permet d'obtenir toutes les versions, y compris la version actuelle et même une fois détruite.

Utilisation de base

Vous disposez maintenant d'une méthode versions qui renvoie toutes les modifications dans un modèle particulier.

produit = Produit.trouver 2 produit.versions
# [, , ...]

En fonction de la version, vous pouvez trouver les changements survenus dans un modèle

v = produit.versions.dernière

v.event #, il renvoie la mise à jour/créer/détruire
v.whodunnit #it renvoie un identifiant d'utilisateur qui a fait cela
v.réifier le produit tel qu'il était avant la mise à jour

vous pouvez parcourir les versions en utilisant les méthodes previous_version et next_version

produit = produit.version_précédente

product = product.next_version #it renvoie nul s'il n'y a pas d'objet

product.versions.last.whodunnit #it renvoie l'utilisateur qui a effectué la modification particulière

RailsCarma a fourni services de développement Ruby on Rails des 8 dernières années Nos développeurs maîtrisent parfaitement toutes sortes de Développement web Ruby on Rails travailler et gérer tout type de projet. Contactez-nous pour en savoir plus sur nos compétences en développement et les projets que nous pouvons gérer.

Articles Similaires

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

fr_FRFrench