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 ‘paper_trail’ 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.