Module: TransitionsListener::ClassMethods

Defined in:
lib/transitions_listener.rb

Instance Method Summary collapse

Instance Method Details

#listen_transitions(attr, &block) ⇒ Object



21
22
23
# File 'lib/transitions_listener.rb', line 21

def listen_transitions(attr, &block)
  transition_listeners(TransitionsListener::Listener.new(attr, &block))
end

#perform_transition_listeners(model, kind = :before) ⇒ Object



25
26
27
28
29
30
31
32
33
34
# File 'lib/transitions_listener.rb', line 25

def perform_transition_listeners(model, kind = :before)
  transition_listeners.each do |listener|
    c_trans = current_transition_for(model, listener.attr)
    listener.filter_transitions(kind, model, c_trans).each do |trans|
      block = trans[:args][:callback]
      args = c_trans.dup.merge(trans)
      block.is_a?(Proc) ? block.call(model, args) : model.public_send(block)
    end
  end
end