Rails 5 - 使用Audited gem查看更改

时间:2016-10-07 07:44:35

标签: ruby-on-rails ruby-on-rails-5 acts-as-audited

在我构建的用于学习RoR的应用程序中,我想添加更改跟踪并使用Audited gem。虽然很清楚如何将其添加到我的模型中,但我怎么能看到这些变化呢?

我想在每个页面上添加一个链接/按钮,用于打开包含审核日志的视图的不同对象/类/模型。即列出按更改日期/时间排序的所有更改(日期/时间,字段,旧值,新值,按用户)。

找不到任何相关文档。所有帮助开始受到赞赏。

2 个答案:

答案 0 :(得分:4)

几个月前我和Papertrail Gem合作时,我需要确切的功能。我修改了我的代码以适用于审计的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

代码是自我解释的如果您通过https://github.com/collectiveidea/audited

audited_changes的说明: 对于audited_changes,我们有像audit.audited_changes # => {"name"=>["Steve", "Ryan"]}这样的哈希值。这意味着你有一个带字符串作为键的哈希和带有两个值的数组。第一个值在更新之前,第二个值在更新之后。

答案 1 :(得分:2)

感谢@ https://ravendb.net/docs/article-page/3.5/csharp/server/plugins/what-are-plugins,我更改了他的代码并添加了其他内容:

%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