Module: RailsMachine

Extended by:
ActiveSupport::Concern
Defined in:
lib/rails_machine.rb,
lib/rails_machine/version.rb,
lib/rails_machine/configuration.rb

Defined Under Namespace

Modules: ClassMethods Classes: Configuration

Constant Summary collapse

VERSION =
"0.0.2"

Instance Method Summary collapse

Instance Method Details

#allowed_transitionObject



12
13
14
15
16
17
18
19
20
# File 'lib/rails_machine.rb', line 12

def allowed_transition
  from = self.state_was.to_sym
  to = self.state.to_sym

  transitions = (transitions_for(from) + transitions_for(:any)).select { |t| t[:to] == to || t[:to] == :any }
  errors.add(:state, :transition_not_found) if transitions.empty?

  errors.add(:state, :guard_failed) if transitions.none? { |t| t[:guards].all? { |guard| guard.call(self) } }
end