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.