class Erratum::Errors::ResourceNotUnique

Attributes

attribute[RW]
pointer[RW]
value[RW]

Public Class Methods

convert(original_error, overrides = {}) click to toggle source
# File lib/erratum/errors/crud/resource_not_unique.rb, line 19
def self.convert(original_error, overrides = {})
  case original_error.class.name
  when 'ActiveRecord::RecordNotUnique'
    message_info_pattern = /DETAIL:  Key \((.+)\)=\((.+)\) already exists\./
    message_info         = original_error
                             .message
                             .match(message_info_pattern)
                             .captures

    initialization_parameters = {
      attribute: message_info[0],
      pointer:   "/data/attributes/#{message_info[0]}",
      value:     message_info[1],
    }

    new(initialization_parameters.merge(overrides))
  end
end

Public Instance Methods

detail() click to toggle source
# File lib/erratum/errors/crud/resource_not_unique.rb, line 46
  def detail
    @detail || <<~HEREDOC.chomp.tr("\n", ' ')
      #{attribute.to_s.humanize} has already been used.
    HEREDOC
  end
http_status() click to toggle source
# File lib/erratum/errors/crud/resource_not_unique.rb, line 38
def http_status
  422
end
source() click to toggle source
Calls superclass method Erratum::Errors::Crud#source
# File lib/erratum/errors/crud/resource_not_unique.rb, line 52
def source
  super.merge(
    'pointer'   => pointer,
    'parameter' => attribute,
    'value'     => value,
  )
end
title() click to toggle source
# File lib/erratum/errors/crud/resource_not_unique.rb, line 42
def title
  'Resource Not Unique'
end