Sha256: dc59d3799ea942bc1260f352689b35e4ffbfb02332b0bc3346cfe51048eddefc
Contents?: true
Size: 1.17 KB
Versions: 3
Compression:
Stored size: 1.17 KB
Contents
require "state_machinable/version" require 'active_support' module StateMachinable extend ActiveSupport::Concern class_methods do def state_machine_class "#{self}StateMachine".constantize end def transition_class "#{self}Transition".constantize end end included do before_save :send_ev_before_save, :if => Proc.new { |obj| obj.changed? } after_save :send_ev_after_save, :if => Proc.new { |obj| !obj.id_changed? && obj.changed? } after_save :transition_to_initial_state, :if => Proc.new { |obj| obj.id_changed? } delegate :can_transition_to?, :transition_to!, :transition_to, :to => :state_machine def state_machine @state_machine ||= self.class.state_machine_class.new(self, :transition_class => self.class.transition_class) end def send_ev_before_save self.state_machine.send('ev_before_save') end def send_ev_after_save self.state_machine.send('ev_after_save') end private def transition_to_initial_state if !self.respond_to?(:skip_state_machine?) || !self.skip_state_machine? self.transition_to!(self.state_machine.class.successors['initial'].first) end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
state_machinable-0.0.4 | lib/state_machinable.rb |
state_machinable-0.0.2 | lib/state_machinable.rb |
state_machinable-0.0.1 | lib/state_machinable.rb |