class Enum::Transitions::UpdateHandler

Public Class Methods

new(config) click to toggle source

@param config [Enum::Transisions::Configuration]

# File lib/enum/transitions/update_handler.rb, line 7
def initialize(config)
  @config = config
end

Public Instance Methods

around_update(model) { || ... } click to toggle source
# File lib/enum/transitions/update_handler.rb, line 11
def around_update(model)
  source, target = model.changes[@config.enum]
  transition = @config.transitions.dig(source, target)

  raise Errors::TransitionNotAllowed if transition.nil?

  model.run_callbacks transition do
    model.run_callbacks leaving_event(source) do
      model.run_callbacks entering_event(target) do
        yield
      end
    end
  end
end