2011-05-10 73 views
2

我在User模型上使用插件acts_as_audited。所以我有以下user.rb -在ActiveRecord類中插入一個插件添加的方法

class User < ActiveRecord::Base 
    acts_as_audited 
end 

我知道插件acts_as_audited工作,因爲它有它自己的單元測試。

我想在我自己的規範中存儲「acts_as_audited」的調用,因爲每次創建用戶或對其進行更改時,acts_as_audited都會執行其操作,並審覈每個更改。

我的測試運行速度要快得多,如果我可以將acts_as_audited調用存根以便它不會觸及數據庫。

謝謝!

回答

2

我不認爲有內置在acts_as_audited存根插件什麼,但有一個功能要求這樣做:

https://github.com/collectiveidea/acts_as_audited/issues/18

一種解決方案是寫一個鉤子,以避免寫到數據庫如果靜態類變量爲false:

module CollectiveIdea::Acts::Audited::InstanceMethods 
    private 
    def write_audit(attrs) 
     self.audits.create attrs if auditing_enabled && Audit.auditing_enabled? 
    end 
end 

class Audit 
    @@auditing_enabled = true 
    def self.auditing_enabled? 
    @@auditing_enabled 
    end 

    def self.disable_auditing 
    @@auditing_enabled = false 
    end 

    def self.enable_auditing 
    @@auditing_enabled = true 
    end 
end