Mit Paper Trail können wir alle Änderungen an den Modelldaten zum Zwecke der Bearbeitung und Versionierung verfolgen. Mithilfe dieses Edelsteins können wir sehen, wie ein Modell in jeder Phase seines Lebenszyklus aussieht, und wir können zu jeder Version der Modelldaten zurückkehren und sogar alle Änderungen rückgängig machen, nachdem ein Datensatz zerstört wurde, um ihn vollständig wiederherzustellen.
Juwel paper_trail' Führen Sie bundle install aus, um es zu installieren.
Nach der Bundle-Installation können Sie den folgenden Befehl ausführen, um die Tabelle Versionen zu Ihrer Datenbank hinzuzufügen
bundle exec rails generate paper_trail:install
bundle exec rake db:migrate
Fügen Sie Ihren Modellen die Methode has_paper_trail zur Nachverfolgung hinzu.
Klasse Produkt < ActiveRecord::Base
has_paper_trail
end
Wenn Sie eine current_user-Methode verwenden, können Sie mit dem folgenden Callback nachvollziehen, wer für eine bestimmte Änderung verantwortlich ist
Klasse ApplicationController
before_action :set_paper_trail_whodunnit
end
Merkmale von paper trail gem
Es speichert jede Änderung im Modell, wie z.B. Erstellen, Aktualisieren und Zerstören
Es speichert keine Aktualisierungen, es sei denn, es werden Änderungen vorgenommen.
Es ermöglicht Ihnen, jede Version zu erhalten, einschließlich der aktuellen und sogar einmal zerstörten
Grundlegende Verwendung
Jetzt haben Sie eine Versionsmethode, die alle Änderungen in einem bestimmten Modell zurückgibt
Produkt = Produkt.finden 2
produkt.versionen
# [, , ...]
Anhand der Vesrion können Sie feststellen, welche Änderungen in einem Modell vorgenommen wurden
v = produkt.versionen.letzte
v.event # liefert Update / Create / Destroy
v.whodunnit #it liefert eine Benutzerkennung, die dies getan hat
v.reify das Podukt so, wie es vor der Aktualisierung war
Sie können mit den Methoden previous_version und next_version durch die Versionen navigieren
produkt = produkt.vorherige_version
product = product.next_version #it gibt nil zurück, wenn es kein Objekt gibt
product.versions.last.whodunnit #it liefert den Benutzer, der die jeweilige Änderung vorgenommen hat
RailsCarma bietet seit Jahren Ruby on Rails-Entwicklungsdienste seit 8 Jahren Unsere Entwickler sind sehr versiert in der Durchführung aller Arten von Ruby on Rails-Webentwicklung arbeiten und jede Art von Projekt bearbeiten. Kontaktieren Sie uns, um mehr über unsere Entwicklungsfähigkeiten und die Projekte, die wir bearbeiten können, zu erfahren.