2016-10-07 2 views
1

In meiner App, die ich zum RoR-Lernen erstelle, möchte ich Änderungsnachverfolgung hinzufügen und dafür das Geprüfte Juwel verwenden. Während es klar ist, wie es zu meinen Modellen hinzugefügt wird, wie kann ich die Änderungen sehen?Rails 5 - Änderungen mit dem Auditierten Juwel anzeigen

Ich würde eine Verknüpfung/Schaltfläche auf jeder Seite für die verschiedenen Objekte/Klassen/Modelle hinzufügen, die eine Ansicht mit dem Überwachungsprotokoll öffnet. d.h. Auflistung aller Änderungen (Datum/Uhrzeit, Feld, alter Wert, neuer Wert, nach Benutzer), sortiert nach Datum/Uhrzeit der Änderung.

Kann keine Dokumentation dafür finden. Alle Hilfe, um zu beginnen, geschätzt.

Antwort

2

Ich wurde genaue Funktion benötigt, als ich vor ein paar Monaten mit Papertrail Gem gearbeitet habe. Ich habe meinen Code geändert, damit er für einen geprüften Edelstein funktioniert. Ich hoffe, unterhalb von haml Code wirst du einen wirklich guten Start haben.

%table.table.table-hover 
    %thead 
    %tr 
     %th Type 
     %th When 
     %th Who 
     %th What Changed 
    - model.audits.order(:created_at).each do |audit| 
     %tr 
     %td= audit.action 
     %td= audit.created_at 
     %td= audit.user.name 
     %td 
      - audit.audited_changes.each do |k, v| 
      %b= k.titleize 
      from 
      %b= "'#{v[0]}'" 
      to 
      %b= "'#{v[1]}'" 
      %br 

Der Code ist selbsterklärend Wenn Sie durch https://github.com/collectiveidea/audited

Erklärung für audited_changes gehen: Für audited_changes wir Hash wie audit.audited_changes # => {"name"=>["Steve", "Ryan"]} haben. Das bedeutet, Sie haben Hash mit String als Schlüssel und Array mit zwei Werten. Der erste Wert ist vor der Aktualisierung und der zweite nach der Aktualisierung.

+0

Tx Dinesh - wird es Anfang dieser Woche einen Blick darauf werfen. Dann lass es dich wissen. –

+0

Achtung: audited_changes-Wert könnte ein Array oder eine Zeichenfolge sein! - audit.audited_changes.each do | k, v | % b = k.titlesize - wenn v.class == Array von = " '# {v [0]}'" zu = # " '# {v [1]}'" - sonst = "'# {v}'" % br – dumP

1

Dank @dnsh, änderte ich seinen Code und hinzugefügt sonst:

%table.table.table-hover 
    %thead 
    %tr 
     %th Type 
     %th When 
     %th Who 
     %th What Changed 
    - model.audits.order(:created_at).each do |audit| 
     %tr 
     %td= audit.action 
     %td= audit.created_at 
     %td= audit.user.name 
     %td 
      - audit.audited_changes.each do |k, v| 
      %b= k.titleize 
      - if v.class == Array # if updated 
       from 
       %b= "'#{v[0]}'" 
       to 
       %b= "'#{v[1]}'" 
       %br 
      - else # if created 
       = v