Class: SuperModel::Scriber::Observer
- Inherits:
-
Object
- Object
- SuperModel::Scriber::Observer
- Includes:
- Singleton
- Defined in:
- lib/supermodel/scriber.rb
Class Method Summary collapse
Instance Method Summary collapse
- #after_create(rec) ⇒ Object
- #after_destroy ⇒ Object
- #after_update(rec) ⇒ Object
-
#observed_class_inherited(subclass) ⇒ Object
:nodoc:.
-
#update(observed_method, object) ⇒ Object
:nodoc:.
Class Method Details
.disable(&block) ⇒ Object
11 12 13 14 15 |
# File 'lib/supermodel/scriber.rb', line 11 def disable(&block) @disabled = true yield @disabled = false end |
.disabled? ⇒ Boolean
7 8 9 |
# File 'lib/supermodel/scriber.rb', line 7 def disabled? @disabled end |
Instance Method Details
#after_create(rec) ⇒ Object
18 19 20 |
# File 'lib/supermodel/scriber.rb', line 18 def after_create(rec) rec.class.record(:create, rec.attributes) end |
#after_destroy ⇒ Object
30 31 32 |
# File 'lib/supermodel/scriber.rb', line 30 def after_destroy rec.class.record(:destroy, rec.id) end |
#after_update(rec) ⇒ Object
22 23 24 25 26 27 28 |
# File 'lib/supermodel/scriber.rb', line 22 def after_update(rec) changed_to = rec.previous_changes.inject({}) {|hash, (key, (from, to))| hash[key] = to hash } rec.class.record(:update, changed_to) end |
#observed_class_inherited(subclass) ⇒ Object
:nodoc:
39 40 41 |
# File 'lib/supermodel/scriber.rb', line 39 def observed_class_inherited(subclass) #:nodoc: subclass.add_observer(self) end |
#update(observed_method, object) ⇒ Object
:nodoc:
34 35 36 37 |
# File 'lib/supermodel/scriber.rb', line 34 def update(observed_method, object) #:nodoc: return if self.class.disabled? send(observed_method, object) if respond_to?(observed_method) end |