【问题标题】:Rails 5 - view changes using Audited gemRails 5 - 使用 Audited gem 查看更改
【发布时间】:2017-02-16 03:30:32
【问题描述】:

在我为学习 RoR 而构建的应用中,我想添加更改跟踪并为此使用 Audited gem。虽然很清楚如何将其添加到我的模型中,但我如何才能看到更改?

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

找不到任何文档。感谢您对入门的所有帮助。

【问题讨论】:

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


    【解决方案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
    

    【讨论】:

    【解决方案2】:

    几个月前我在使用 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"]} 的哈希值。这意味着您有以字符串为键的散列和具有两个值的数组。第一个值是更新前,第二个是更新后。

    【讨论】:

    • Tx Dinesh - 本周初会看一下。然后告诉你。
    • 注意:audited_changes 值可以是数组或字符串! - audit.audited_changes.each 做|k, v| %b= k.titlesize - 如果 v.class== 数组从 = "'#{v[0]}'" 到 =# "'#{v[1]}'" - else = "'#{v} '" %br
    • 为什么我得到undefined method 'audits'?我正在运行 Ruby 2.5.1、Rails 5.2.0 和 Audited 4.8.0。我复制了代码,然后用我的模式名称/类替换 model
    • 您遇到的问题是如何解决的? @DavidAngulo
    猜你喜欢
    • 2017-09-10
    • 2017-05-09
    • 2018-07-31
    • 1970-01-01
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多