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.5"
Instance Method Summary
collapse
Instance Method Details
#allowed_state ⇒ Object
14
15
16
17
18
19
20
|
# File 'lib/rails_machine.rb', line 14
def allowed_state
if self.new_record?
validate_init_state
else
validate_transition
end
end
|
#valid_init_state ⇒ Object
28
29
30
|
# File 'lib/rails_machine.rb', line 28
def valid_init_state
init_states.empty? || init_states.include?(self.state.to_sym)
end
|
#validate_init_state ⇒ Object
22
23
24
25
26
|
# File 'lib/rails_machine.rb', line 22
def validate_init_state
unless valid_init_state
errors.add(:state,:invalid_init_state)
end
end
|
#validate_transition ⇒ Object
32
33
34
35
36
37
38
39
40
|
# File 'lib/rails_machine.rb', line 32
def validate_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 }
return 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
|