class Erratum::Errors::ResourceNotFound

Attributes

missing_ids[RW]

Public Class Methods

convert(original_error, overrides = {}) click to toggle source
# File lib/erratum/errors/crud/resource_not_found.rb, line 14
def self.convert(original_error, overrides = {})
  initialization_parameters = {}

  case original_error.class.name
  when 'ActiveRecord::RecordNotFound'
    initialization_parameters = {
      missing_ids: case original_error.message
                   when /\ACouldn't find .* without an ID\z/
                     []
                   when /\ACouldn't find .* with \'.*\'=([a-f0-9\-]+)/
                     [Regexp.last_match(1)]
                   when /\ACouldn't find all .* with \'.*\': ((?:[a-f0-9\-]+(?:, )?)+)/
                     Array(Regexp.last_match(1).split(', '))
                   end,
    }
  end

  new(initialization_parameters.merge(overrides))
end

Public Instance Methods

action() click to toggle source
# File lib/erratum/errors/crud/resource_not_found.rb, line 55
def action
  @action || 'access'
end
detail() click to toggle source
# File lib/erratum/errors/crud/resource_not_found.rb, line 42
  def detail
    <<~HEREDOC.chomp.tr("\n", ' ')
      The #{resource_name} you attempted to #{action} for this request is either
      not authorized for the authenticated user or does not exist.
    HEREDOC
  end
http_status() click to toggle source
# File lib/erratum/errors/crud/resource_not_found.rb, line 34
def http_status
  404
end
source() click to toggle source
Calls superclass method Erratum::Errors::Crud#source
# File lib/erratum/errors/crud/resource_not_found.rb, line 49
def source
  super.merge(
    'missing_ids' => missing_ids,
  )
end
title() click to toggle source
# File lib/erratum/errors/crud/resource_not_found.rb, line 38
def title
  'Resource Not Found'
end