Sha256: 87811720ed6d61b5cddb8a9231a5c5ad3e72dc58e1176d3636e1c73b2777fa25

Contents?: true

Size: 903 Bytes

Versions: 3

Compression:

Stored size: 903 Bytes

Contents

module Metaractor
  module ContextErrors
    def errors
      if super.nil?
        self.errors = Metaractor::Errors.new
      end

      super
    end

    def fail_with_error!(message: nil, errors: nil)
      add_error(message: message, errors: errors)
      fail!
    end

    def fail_with_errors!(messages: [], errors: {})
      add_errors(messages: messages, errors: errors)
      fail!
    end

    def add_error(message: nil, errors: nil)
      if message.nil?
        add_errors(errors: errors)
      else
        add_errors(messages: Array(message))
      end
    end

    def add_errors(messages: [], errors: {})
      if !messages.empty?
        self.errors.add(errors: { base: messages })
      else
        self.errors.add(errors: errors)
      end
    end

    def error_messages
      errors.full_messages
    end
  end
end

Interactor::Context.send(:include, Metaractor::ContextErrors)

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
metaractor-2.1.1 lib/metaractor/context_errors.rb
metaractor-2.1.0 lib/metaractor/context_errors.rb
metaractor-2.0.0 lib/metaractor/context_errors.rb