Pappersspår låter oss spåra alla förändringar i modelldata för redigering och versionshantering. Genom att använda denna pärla kan vi se hur en modell ser ut, i varje skede av dess livscykel och vi kan ta tillbaka den till valfri version av modelldata och vi kan till och med ångra alla ändringar efter att en post har förstörts så att för att återställa den helt.
pärla 'pappersspår' kör paketinstallationen för att installera den
Efter paketinstallationen kan du köra följande kommando för att lägga till versionstabell till din databas
bundle exec rails genererar paper_trail:install
bundle exec rake db:migrate
Lägg till metoden has_paper_trail till dina modeller för spårning.
klass Produkt < ActiveRecord::Base has_paper_trail end
Om du använder en current_user-metod kan du spåra vem som är ansvarig för en viss förändring genom att ringa tillbaka nedan
klass ApplicationController before_action :set_paper_trail_whodunnit slut
Funktioner av papper spår pärla
Den lagrar varje förändring som skett i modellen som att skapa, uppdatera och förstöra
Det lagrar inga uppdateringar såvida det inte finns några ändringar
Det låter dig få alla versioner inklusive den faktiska och till och med en gång förstörd
Grundläggande användning
Nu har du en versionsmetod som returnerar alla ändringar i en viss modell
produkt = Produkt.hitta 2 produktversioner
# [, , ...]
Baserat på versionen kan du hitta de förändringar som skett i en modell
v = product.versions.last
v.event # den returnerar uppdatera / skapa / förstöra
v.whodunnit #it returnerar ett användar-id som gjorde detta
v.reify produkten som den var före uppdateringen
du kan navigera i versioner genom att använda metoderna previous_version och next_version
produkt = produkt.föregående_version
product = product.next_version #it returnerar noll om det inte finns något objekt
product.versions.last.whodunnit #it returnerar användaren som gjorde den specifika ändringen
RailsCarma har tillhandahållit utvecklingstjänster för ruby on rails från de senaste 8 åren Våra utvecklare är väl insatta i att göra alla typer av Ruby on Rails webbutveckling arbeta och hantera alla typer av projekt. Kontakta oss för att veta mer om vår utvecklingskompetens och de projekt som vi kan hantera.