1

我使用collectiveea 的审计解决方案在rails 中进行审计。所以,有一个列 (audited_changes) 是数据库中的 TEXT 定义。当我从数据库中检索审计时,我得到一个纯字符串,当我在视图中调用该属性时,它是非格式化字符串。在rdocs中,它说存在所有更改的序列化哈希。我怎样才能得到这个哈希?此外,在同一个文档中,它说可以访问 old_attributes 和 new_attributes,这是怎么回事?

在我看来:

<%= @audit.action %> # => update
<%= @audit.audited_changes %> # => --- name: - oldname - newname code: - oldcode - newcode

或者有没有机会格式化这个?

4

3 回答 3

3

我认为目前审核中可能存在错误。您使用的是 3.0.0rc1 吗?这就是我正在使用的,我也发生了类似的事情。首先,它似乎没有将“Audit”识别为 ActiveRecord 对象,因此我在 app/models/audit.rb 中创建了一个空模型。一旦我这样做了,我就会看到你所看到的行为。为了修复它,我删除了 app/models/audit.rb 并在其中添加了一个 config/initializers/audited.rb :

include Audited::Adapters::ActiveRecord
于 2012-05-11T02:21:47.303 回答
0

这是一个老问题,但我有一个替代答案,使用 Rails 4.2 似乎对我来说效果很好。我建议保留模型并将“serialize :audited_changes”添加到顶部,而不是在上述答案中使用初始化程序。

 class Audit < ActiveRecord::Base
   belongs_to :user
   serialize :audited_changes
 end
于 2017-08-02T17:17:20.550 回答
0

您可以使用内置的 Audited::Audit 模型来查询其数据。

例如,

audit = Audited::Audit.last
audit.audited_changes # => {"name"=>["Steve", "Ryan"]}

“Steve”是旧值,“Ryan”是新值。默认情况下,哈希以 yaml 格式存储在数据库中。

于 2019-09-09T16:36:21.887 回答