vestal_versionsとmagic_userstamp

create/update時にモデルの差分をDBに記録してくれるライブラリであるvestal_versions
http://github.com/laserlemon/vestal_versions/

これだけでも「いつ何がどう変更されたか」というモデルの変更履歴を記録していくことができますが、これにmagic_userstampを合わせると「いつ誰が何をどう変更したのか」が記録できるようになります。

でも一個だけ注意点があります。
http://github.com/akm/magic_userstamp のREADME.rdocにも書きましたが、gemのロードする順番によって正しく動作しない場合があります。vestal_versionsのVersionというモデルがmagic_userstampの設定よりも先にロードされた場合です。このような場合、 config/initializers/magic_userstamp.rb の最後の行のコメントを外せばオッケーです。

 require 'magic_userstamp'
 # Comment out if you don't use t.userstamp at all in migrations
 ActiveRecord::ConnectionAdapters::TableDefinition.send(:include, MagicUserstamp::MigrationHelper)
 ActiveRecord::Base.module_eval do
   include MagicUserstamp
 end

 MagicUserstamp::Config.setup.defaults

 # If you have some classes which has loaded before Userstamp is loaded,
 # set record_userstamp true
 # Example: vestal_versions gem
Version.record_userstamp = true if defined?(Version)