diff options
author | Myron Marston <myron.marston@gmail.com> | 2011-04-28 02:07:42 +0800 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2011-04-28 10:23:49 +0800 |
commit | 1f8cc446d9a7ab751a2def65309ac4bc71e85cd3 (patch) | |
tree | eb537f50bf74ca362dada1b52800d42259d65d2f /activemodel/test/models | |
parent | 5d20c0a64aafa4d35f5aa0613cc16170c2a2ec03 (diff) | |
download | rails-1f8cc446d9a7ab751a2def65309ac4bc71e85cd3.tar.gz rails-1f8cc446d9a7ab751a2def65309ac4bc71e85cd3.tar.bz2 rails-1f8cc446d9a7ab751a2def65309ac4bc71e85cd3.zip |
Allow observers to be enabled and disabled.
This is useful in situations like model unit tests and the occasional rake task to backfill old data.
Diffstat (limited to 'activemodel/test/models')
-rw-r--r-- | activemodel/test/models/observers.rb | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/activemodel/test/models/observers.rb b/activemodel/test/models/observers.rb new file mode 100644 index 0000000000..3729b3435e --- /dev/null +++ b/activemodel/test/models/observers.rb @@ -0,0 +1,27 @@ +class ORM + include ActiveModel::Observing + + def save + notify_observers :before_save + end + + class Observer < ActiveModel::Observer + def before_save_invocations + @before_save_invocations ||= [] + end + + def before_save(record) + before_save_invocations << record + end + end +end + +class Widget < ORM; end +class Budget < ORM; end +class WidgetObserver < ORM::Observer; end +class BudgetObserver < ORM::Observer; end +class AuditTrail < ORM::Observer + observe :widget, :budget +end + +ORM.instantiate_observers |