如何在rails app中构建审计跟踪

gro*_*oob 8 ruby-on-rails audit-trail

我有一个小型应用程序.我想在其中加入审计跟踪.基本上添加新用户时.它将在AuditTrailUsers表中插入一行,并创建新的user_id并登录用户的user_id.

我正在考虑使用rails回调before_save.但是,我不确定这是否有效.

想象一下,我有 model/Users.rbmodel/AuditTrailUser.rb

class User < ActiveRecord::Base
    validates_presence_of :userid, :password
        before_save :insert_audit

  def self.authenticate(userid, password)
        user = self.find_by_userid_and_password(userid, password)       
    user
  end

  ##implement insert_audit

end
Run Code Online (Sandbox Code Playgroud)

我如何实现insert_audit它以获取用户ID(登录用户),以便它可以在调用时将其传递给AuditTrailUser AuditTrailUser.create(...).

如果我传入登录用户的用户ID ...那么我是否必须明确地呼叫before_save每个地方......

我是铁杆新手.

gro*_*oob 12

使用Audited gem记录对Rails模型的所有更改.

  • act_as_audited Vestal版本插件(http://github.com/laserlemon/vestal_versions)有一个更好的替代方案.讨论了SO http://stackoverflow.com/questions/2323505/how-to-keep-track-of-model-history-with-mapping-table-in-ruby-on-rails (2认同)
  • 另一个有趣的是paper_trail https://github.com/airblade/paper_trail.Railscasts链接'255-undo-with-paper-trail'http://railscasts.com/episodes/255-undo-with-paper-trail (2认同)