= acts_as_audited +acts_as_audited+ is an ActiveRecord extension that logs all changes to your models in an audits table, with optional revision comments. +acts_as_audited+ has been updated to work with Rails 3, to use it with older version of Rails, please see the rails2 branch. == Installation In Gemfile: gem "acts_as_audited", "2.0.0.rc1" In your application root, run: $ bundle install Generate the migration: * If installing without a previous version of +acts_as_audited+ or you do not mind overwriting your audits table: $ rails g acts_as_audited:install * If upgrading from a previous version of +acts_as_audited+ you might need some alterations to the audits table: $ rails g acts_as_audited:upgrade * After running one of the generators: $ rake db:migrate == Upgrading Upgrading to Rails 3, or even between point releases of +acts_as_audited+, might require alterations to the audits table. After every upgrade please run the following generator: $ rails g acts_as_audited:upgrade The upgrade generator will only generate migrations that are missing, or no migrations at all if you are up to date. == Usage Declare +acts_as_audited+ on your models: class User < ActiveRecord::Base acts_as_audited :except => [:password, :mistress] end Within a web request, will automatically record the user that made the change if your controller has a +current_user+ method. Comments can be added to an audit by setting model.audit_comments before create/update/destroy. If the :comment_required option is given to +acts_as_audited+, the save/update/destroy action will fail with add an error on model.audit_comment and triggering a transaction rollback if model.audit_comment is nil. To record a user in the audits outside of a web request, you can use +as_user+: Audit.as_user(user) do # Perform changes on audited models end == Caveats If your model declares +attr_accessible+ after +acts_as_audited+, you need to set :protect to false. acts_as_audited uses +attr_protected+ internally to prevent malicious users from unassociating your audits, and Rails does not allow both +attr_protected+ and +attr_accessible+. It will default to false if +attr_accessible+ is called before +acts_as_audited+, but needs to be explicitly set if it is called after. class User < ActiveRecord::Base acts_as_audited :protect => false attr_accessible :name end == Compatability +acts_as_audited+ works with Rails 3.0.0 or later. For older versions of Rails, please see the rails2 branch. == Getting Help Review the documentation at http://rdoc.info/github/collectiveidea/acts_as_audited Join the mailing list for getting help or offering suggestions - http://groups.google.com/group/acts_as_audited == Contributing Contributions are always welcome. Checkout the latest code on GitHub - http://github.com/collectiveidea/acts_as_audited Please include tests with your patches. There are a few gems required to run the tests: $ bundle install Make sure the tests pass against the version of Rails specified in the Gemfile $ rake spec test Please report bugs or feature suggestions on GitHub - http://github.com/collectiveidea/acts_as_audited/issues