Class: SuperModel::Scriber::Observer

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/supermodel/scriber.rb

Class Method Summary collapse

Instance Method Summary collapse

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

Returns:

  • (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_destroyObject



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