module StateMachinable::Base
Public Instance Methods
method_missing(name, *args, &block)
click to toggle source
Calls superclass method
# File lib/state_machinable/base.rb, line 40 def method_missing(name, *args, &block) begin events = "#{self.class}::EVENTS".constantize.dup rescue NameError events = [] end clean_name = name.to_s.chomp('!').to_sym if events.include?(clean_name) state_class = self.class.state_class(self.current_state) if state_class.present? && state_class.respond_to?(clean_name) state_class.send(clean_name, self.object, *args) else if name.to_s.last == '!' raise StateMachinable::EventNotHandledException.new(:event => clean_name, :state => self.current_state) else nil end end else super end end
state_class(state)
click to toggle source
# File lib/state_machinable/base.rb, line 6 def state_class(state) "#{self}::#{state.classify}".constantize rescue NameError nil end