lib/aasm/base.rb in aasm-3.0.16 vs lib/aasm/base.rb in aasm-3.0.17

- old
+ new

@@ -1,54 +1,58 @@ module AASM class Base def initialize(clazz, options={}, &block) @clazz = clazz - sm = AASM::StateMachine[@clazz] - sm.config.column = options[:column].to_sym if options[:column] + @state_machine = AASM::StateMachine[@clazz] + @state_machine.config.column = options[:column].to_sym if options[:column] if options.key?(:whiny_transitions) - sm.config.whiny_transitions = options[:whiny_transitions] - elsif sm.config.whiny_transitions.nil? - sm.config.whiny_transitions = true # this is the default, so let's cry + @state_machine.config.whiny_transitions = options[:whiny_transitions] + elsif @state_machine.config.whiny_transitions.nil? + @state_machine.config.whiny_transitions = true # this is the default, so let's cry end if options.key?(:skip_validation_on_save) - sm.config.skip_validation_on_save = options[:skip_validation_on_save] - elsif sm.config.skip_validation_on_save.nil? - sm.config.skip_validation_on_save = false # this is the default, so don't store any new state if the model is invalid + @state_machine.config.skip_validation_on_save = options[:skip_validation_on_save] + elsif @state_machine.config.skip_validation_on_save.nil? + @state_machine.config.skip_validation_on_save = false # this is the default, so don't store any new state if the model is invalid end end def initial_state - AASM::StateMachine[@clazz].initial_state + @state_machine.initial_state end + # define a state def state(name, options={}) # @clazz.aasm_state(name, options) - sm = AASM::StateMachine[@clazz] - sm.create_state(name, @clazz, options) - sm.initial_state = name if options[:initial] || !sm.initial_state + @state_machine.add_state(name, @clazz, options) + @state_machine.initial_state = name if options[:initial] || !@state_machine.initial_state @clazz.send(:define_method, "#{name.to_s}?") do aasm_current_state == name end + + unless @clazz.const_defined?("STATE_#{name.to_s.upcase}") + @clazz.const_set("STATE_#{name.to_s.upcase}", name) + end end + # define an event def event(name, options={}, &block) # @clazz.aasm_event(name, options, &block) - sm = AASM::StateMachine[@clazz] - unless sm.events.has_key?(name) - sm.events[name] = AASM::SupportingClasses::Event.new(name, options, &block) + unless @state_machine.events.has_key?(name) + @state_machine.events[name] = AASM::Event.new(name, options, &block) end # an addition over standard aasm so that, before firing an event, you can ask # may_event? and get back a boolean that tells you whether the guard method # on the transition will let this happen. @clazz.send(:define_method, "may_#{name.to_s}?") do |*args| - aasm_may_fire_event?(name, *args) + aasm.may_fire_event?(name, *args) end @clazz.send(:define_method, "#{name.to_s}!") do |*args| aasm_fire_event(name, {:persist => true}, *args) end @@ -57,14 +61,14 @@ aasm_fire_event(name, {:persist => false}, *args) end end def states - AASM::StateMachine[@clazz].states + @state_machine.states end def events - AASM::StateMachine[@clazz].events + @state_machine.events end def states_for_select states.map { |state| state.for_select } end