Module: AASM
- Defined in:
- lib/aasm.rb,
lib/event.rb,
lib/state.rb,
lib/version.rb,
lib/persistence.rb,
lib/state_machine.rb,
lib/state_transition.rb,
lib/persistence/active_record_persistence.rb
Defined Under Namespace
Modules: ClassMethods, Persistence, SupportingClasses, VERSION Classes: InvalidTransition, StateMachine
Class Method Summary collapse
-
.included(base) ⇒ Object
:nodoc:.
Instance Method Summary collapse
-
#aasm_current_state ⇒ Object
Instance methods.
- #aasm_events_for_current_state ⇒ Object
- #aasm_events_for_state(state) ⇒ Object
Class Method Details
.included(base) ⇒ Object
:nodoc:
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/aasm.rb', line 10 def self.included(base) #:nodoc: # TODO - need to ensure that a machine is being created because # AASM was either included or arrived at via inheritance. It # cannot be both. base.extend AASM::ClassMethods AASM::Persistence.set_persistence(base) AASM::StateMachine[base] = AASM::StateMachine.new('') base.class_eval do def base.inherited(klass) AASM::StateMachine[klass] = AASM::StateMachine[self].dup super end end end |
Instance Method Details
#aasm_current_state ⇒ Object
Instance methods
84 85 86 87 88 89 90 91 92 |
# File 'lib/aasm.rb', line 84 def aasm_current_state return @aasm_current_state if @aasm_current_state if self.respond_to?(:aasm_read_state) || self.private_methods.include?('aasm_read_state') @aasm_current_state = aasm_read_state end return @aasm_current_state if @aasm_current_state self.class.aasm_initial_state end |
#aasm_events_for_current_state ⇒ Object
94 95 96 |
# File 'lib/aasm.rb', line 94 def aasm_events_for_current_state aasm_events_for_state(aasm_current_state) end |
#aasm_events_for_state(state) ⇒ Object
98 99 100 101 |
# File 'lib/aasm.rb', line 98 def aasm_events_for_state(state) events = self.class.aasm_events.values.select {|event| event.transitions_from_state?(state) } events.map {|event| event.name} end |