MagicUserstamp 0.1.1 リリース

先日userstampを作り替えてモデル内でuserstampの定義をしなくてもオッケーって感じにしました。今度はそれをgemで使いたくなったのですが、中身を大きく作り替えちゃったんで、userstampという名前で僕がgem作っちゃまずいかなと思って別の名前にしてみたわけです。

インストールなどは http://github.com/akm/magic_userstamp を見てください。

これを使うとオリジナルのUserstampの機能に加え、config/initializers に作る設定だけで簡単にcreator_id/updater_id/deleter_id*1を使えます。
これらのカラム名は全体/モデル毎に変更することも可能です。

*1:acts_as_paranoidと併用時

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)