A recent thread titled "DB record versioning/audit" made me post this message:
I've created a plugin called "acts_as_logged". In your model you simply put: acts_as_logged and it then uses riff (http://wiki.rubyonrails.org/rails/pages/Riff+Plugin) to detect differences in the model and logs the changes to a log table. In the log table, I store the user id, timestamp, what was changed (total_charge_amount was changed from '10.35' to '32.33'), what object type (for instance, MedicalClaim, Article, User), and what the id is of the object.
I am using it in my current project but really have not made it for global consumption, but if there is intrest, I'll work on it a bit to make it something that can be released to the general public.