Class: Stator::Integration
- Inherits:
-
Object
- Object
- Stator::Integration
- Defined in:
- lib/stator/integration.rb
Instance Method Summary collapse
-
#initialize(machine, record) ⇒ Integration
constructor
A new instance of Integration.
-
#invalid_state! ⇒ Object
todo: i18n.
- #invalid_transition!(was, is) ⇒ Object
- #state ⇒ Object
- #state=(new_value) ⇒ Object
- #state_changed? ⇒ Boolean
- #state_was(use_previous = false) ⇒ Object
- #track_transition ⇒ Object
- #validate_transition ⇒ Object
Constructor Details
#initialize(machine, record) ⇒ Integration
Returns a new instance of Integration.
8 9 10 11 |
# File 'lib/stator/integration.rb', line 8 def initialize(machine, record) @machine = machine @record = record end |
Instance Method Details
#invalid_state! ⇒ Object
todo: i18n
54 55 56 |
# File 'lib/stator/integration.rb', line 54 def invalid_state! @record.errors.add(@machine.field, "is not a valid state") end |
#invalid_transition!(was, is) ⇒ Object
58 59 60 |
# File 'lib/stator/integration.rb', line 58 def invalid_transition!(was, is) @record.errors.add(@machine.field, "cannot transition to #{is.inspect} from #{was.inspect}") end |
#state ⇒ Object
20 21 22 |
# File 'lib/stator/integration.rb', line 20 def state @record.send(@machine.field) end |
#state=(new_value) ⇒ Object
16 17 18 |
# File 'lib/stator/integration.rb', line 16 def state=(new_value) @record.send("#{@machine.field}=", new_value) end |
#state_changed? ⇒ Boolean
34 35 36 |
# File 'lib/stator/integration.rb', line 34 def state_changed? @record.send("#{@machine.field}_changed?") end |
#state_was(use_previous = false) ⇒ Object
25 26 27 28 29 30 31 |
# File 'lib/stator/integration.rb', line 25 def state_was(use_previous = false) if use_previous @record.previous_changes[@machine.field.to_s].try(:[], 0) else @record.send("#{@machine.field}_was") end end |
#track_transition ⇒ Object
62 63 64 65 66 67 |
# File 'lib/stator/integration.rb', line 62 def track_transition self.attempt_to_track_state(self.state_was) self.attempt_to_track_state(self.state) true end |
#validate_transition ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/stator/integration.rb', line 40 def validate_transition return unless self.state_changed? was = self.state_was is = self.state if @record.new_record? invalid_state! unless @machine.matching_transition(::Stator::Transition::ANY, is) else invalid_transition!(was, is) unless @machine.matching_transition(was, is) end end |