2016-10-07 78 views
1

在我構建的學習RoR的應用程序中,我想添加更改跟蹤並使用Audited gem。雖然很清楚如何將其添加到我的模型中,但我如何看到這些更改?Rails 5 - 使用Audited gem查看更改

我想爲不同的對象/類/模型在每個頁面上添加一個鏈接/按鈕,用審覈日誌打開一個視圖。即列出按改變日期/時間排序的所有改變(日期/時間,字段,舊值,新值,由用戶)。

找不到任何文檔。所有幫助開始感激。

回答

2

幾個月前我和Papertrail Gem一起工作時,需要準確的功能。我修改了我的代碼,以便爲審計的創業板工作。我希望下面的haml代碼會給你一個很好的開始。

%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 

代碼是自我解釋,如果你按​​3210

解釋audited_changes: 對於我們有散像audit.audited_changes # => {"name"=>["Steve", "Ryan"]} audited_changes。這意味着你將字符串散列爲一個鍵值和具有兩個值的數組。第一個值在更新之前,第二個在更新之後。

+0

的Tx迪內希 - 本週初將看看它。然後讓你知道。 –

+0

注意:audited_changes的值可能是數組或字符串! - audit.audited_changes.each do | k,v | %B = k.titlesize - 如果v.class ==陣列 從 = 「 '#{V [0]}'」 到 =# 「 '#{V [1]}'」 - 否則 =「'#{v}'」「 %br – dumP

1

感謝@dnsh,我改變了自己的代碼,增加了其他:

%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