Rails 5 - 使用 Audited 查看更改 gem
Rails 5 - view changes using Audited gem
在我为学习 RoR 而构建的应用程序中,我想添加更改跟踪并为此使用 Audited gem。虽然很清楚如何将它添加到我的模型中,但我如何才能看到更改?
我想在每个页面上为不同的对象/类/模型添加一个 link/ 按钮,用于打开带有审计日志的视图。即列出所有更改(date/time,字段,旧值,新值,按用户)按更改的 date/time 排序。
找不到它的任何文档。感谢所有入门帮助。
几个月前我在使用 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"]}
这样的散列。这意味着您有以字符串为键的散列和具有两个值的数组。第一个值是更新前,第二个是更新后。
感谢@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
在我为学习 RoR 而构建的应用程序中,我想添加更改跟踪并为此使用 Audited gem。虽然很清楚如何将它添加到我的模型中,但我如何才能看到更改?
我想在每个页面上为不同的对象/类/模型添加一个 link/ 按钮,用于打开带有审计日志的视图。即列出所有更改(date/time,字段,旧值,新值,按用户)按更改的 date/time 排序。
找不到它的任何文档。感谢所有入门帮助。
几个月前我在使用 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"]}
这样的散列。这意味着您有以字符串为键的散列和具有两个值的数组。第一个值是更新前,第二个是更新后。
感谢@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