2012-05-10 40 views
0

Im使用collectiveidea的經過審計的解決方案在rails中進行審計。 因此,有一列(audited_changes)是數據庫中的TEXT定義。當我從數據庫檢索審計時,我得到一個純字符串,並且當我在視圖中調用該屬性時,它是非格式字符串。在rdocs它說,這是所有變化的序列化散列。我怎樣才能得到這個散列?另外,在同一個文檔中,它說可以訪問old_attributes和new_attributes,這是怎麼回事?Audited audited_changes混淆

筆者認爲:

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

或者格式化這個機會嗎?

回答

3

我認爲目前可能存在審計中的錯誤。你使用的是3.0.0rc1嗎?這就是我正在使用的,並且我有類似的事情發生。首先,它似乎沒有將「Audit」識別爲ActiveRecord對象,所以我在app/models/audit.rb中創建了一個空模型。一旦我做到了,我就看到了你所看到的行爲。爲了解決這個問題,我刪除了應用程序/模型/ audit.rb,並增加了配置/初始化/本在它audited.rb:

include Audited::Adapters::ActiveRecord 
+0

太棒了!但我不明白髮生了什麼,爲什麼這樣解決呢?是的,即時通訊使用3.0.0rc1。 –

+0

我提出了一個關於它與審計有關的錯誤:https://github.com/collectiveidea/audited/issues/101 這似乎有些審計模塊沒有正確拉入ActiveRecord – ralfthewise

0

這是一個老問題,但我有一個備選答案,似乎使用Rails 4.2對我來說工作得很好。而不是在上面的答案中使用初始值設定項,我建議保留模型並在頂部添加「serialize:audited_changes」。

class Audit < ActiveRecord::Base 
    belongs_to :user 
    serialize :audited_changes 
end