Sha256: a2f9ae5017c86bc2fb952e5864601c6caca015ad38e0900bcc7895da8859f504
Contents?: true
Size: 1.33 KB
Versions: 6
Compression:
Stored size: 1.33 KB
Contents
module StateMachina class Event attr_reader :model_name, :machine_name, :name, :metadata attr_accessor :machine, :guard_context alias_method :state_machine, :machine def initialize(model_name, machine_name, name, metadata: {}) @model_name = model_name @machine_name = machine_name @name = name.to_s @metadata = metadata end def transition(from_state_name, to_state_name, guard: nil, metadata: {}) machine = StateMachina::Registry.find_machine!(model_name, machine_name) transition = StateMachina::Transition.new(model_name, machine.name, name, from_state_name, to_state_name, guard: guard, metadata: metadata) StateMachina::Registry.register_transition(transition) end def transitions transitions = StateMachina::Registry.find_transitions(model_name, machine_name, name) transitions.each do |transition| transition.machine = machine transition.guard_context = guard_context end transitions end def execute resolve_to_transition&.execute end def resolve_to_transition transitions.find do |transition| transition.possible? && transition.permitted? end end def possible? transitions.any?(&:possible?) end def permitted? transitions.any?(&:permitted?) end end end
Version data entries
6 entries across 6 versions & 1 rubygems