我使用collectiveidea的审计解决方案进行铁路审计。 因此,有一个列(audited_changes)是数据库中的TEXT定义。当我从数据库中检索审计时,我得到一个普通字符串,当我在视图中调用该属性时,是非格式化字符串。在rdocs中,它表示所有更改的序列化哈希值。我怎么能得到这个哈希?此外,在相同的文档中,它表示可以访问old_attributes和new_attributes,这是怎么回事?
在我看来:
<%= @audit.action %> # => update
<%= @audit.audited_changes %> # => --- name: - oldname - newname code: - oldcode - newcode
还是有机会格式化这个?
答案 0 :(得分:3)
我认为目前可能存在审核中的错误。你在使用3.0.0rc1吗?这就是我正在使用的东西,我发生了类似的事情。首先,它似乎没有将“Audit”识别为ActiveRecord对象,因此我在app / models / audit.rb中创建了一个空模型。一旦我这样做,我就看到了你所看到的行为。为了解决这个问题,我删除了app / models / audit.rb并在其中添加了一个config / initializers / audited.rb:
include Audited::Adapters::ActiveRecord
答案 1 :(得分:0)
这是一个老问题,但我有一个替代答案似乎对我使用Rails 4.2很好。我没有在上面的答案中使用初始化程序,而是建议保留模型并添加&#34; serialize:audited_changes&#34;到顶部。
<p>Press the R (red), Y (yellow), G (green) or B (blue) key to change paragraph colors accordingly.</p>
<h1>Paragraph 1</h1>
<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec dignissim fringilla dapibus. Curabitur placerat efficitur molestie. Quisque quis consequat nibh. Aenean feugiat, eros eget aliquam vulputate, leo augue luctus lectus, non lobortis libero quam non sem. Aliquam sit amet tincidunt ex, mollis interdum massa.</div>
<h1>Paragraph 2</h1>
<div>Vivamus at justo blandit, ornare leo id, vehicula urna. Fusce sed felis eget magna viverra feugiat eget nec orci. Duis non massa nibh. Aenean vehicula velit a magna lobortis tempor ut quis felis. Proin vitae dui a eros facilisis fringilla ut ut ante.</div>
<h1>Paragraph 3</h1>
<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis sit amet pharetra massa. Nulla blandit erat nulla, et scelerisque libero varius ut. Praesent bibendum eu magna ullamcorper venenatis. Sed ut pellentesque leo. Sed ultrices sapien consequat odio posuere gravida.</div>
答案 2 :(得分:0)
您可以使用内置的Audited :: Audit模型来查询其数据。
例如,
audit = Audited::Audit.last
audit.audited_changes # => {"name"=>["Steve", "Ryan"]}
“ Steve”是旧值,“ Ryan”是新值。默认情况下,哈希以yaml格式存储在数据库中。