StateMachine supports adding State

This commit is contained in:
Scott Barron 2008-05-31 15:33:17 -07:00
parent 7dbbc1480b
commit cf2bd90cfb
2 changed files with 10 additions and 5 deletions

View File

@ -27,8 +27,9 @@ module AASM
end
def aasm_state(name, options={})
aasm_states << AASM::SupportingClasses::State.new(name, options) unless aasm_states.include?(name)
self.aasm_initial_state = name unless self.aasm_initial_state
sm = AASM::StateMachineFactory[self]
sm.create_state(name, options)
sm.initial_state = name unless sm.initial_state
define_method("#{name.to_s}?") do
aasm_current_state == name
@ -50,7 +51,7 @@ module AASM
end
def aasm_states
@aasm_states ||= []
AASM::StateMachineFactory[self].states
end
def aasm_events
@ -58,7 +59,7 @@ module AASM
end
def aasm_states_for_select
aasm_states.map { |state| state.for_select }
AASM::StateMachineFactory[self].states.map { |state| state.for_select }
end
end
@ -99,7 +100,7 @@ module AASM
end
def aasm_state_object_for_state(name)
self.class.aasm_states.find {|s| s == name}
AASM::StateMachineFactory[self.class].states.find {|s| s == name}
end
def aasm_fire_event(name, persist)

View File

@ -13,5 +13,9 @@ module AASM
@states = []
@events = []
end
def create_state(name, options)
@states << AASM::SupportingClasses::State.new(name, options) unless @states.include?(name)
end
end
end