class Erratum::Errors::InvalidAssociation
Attributes
association_id[RW]
association_name[RW]
Public Class Methods
convert(original_error, overrides = {})
click to toggle source
# File lib/erratum/errors/crud/invalid_association.rb, line 15 def self.convert(original_error, overrides = {}) initialization_parameters = {} case original_error.class.name when 'ActiveRecord::InvalidForeignKey' message_info_pattern = /DETAIL: Key \((.*?)(?:_id)?\)=\(([a-f0-9\-]+)\)/ message_info = original_error .message .match(message_info_pattern) .captures initialization_parameters = { association_name: message_info[0], association_id: message_info[1], } end new(initialization_parameters.merge(overrides)) end
Public Instance Methods
detail()
click to toggle source
# File lib/erratum/errors/crud/invalid_association.rb, line 43 def detail if association_name == 'id' <<~HEREDOC.chomp.tr("\n", ' ') You cannot #{action} this #{resource_name} because its #{association_name} is still being referenced by other things. HEREDOC else <<~HEREDOC.chomp.tr("\n", ' ') The #{association_name} that you attempted to associate with the #{resource_name} was not valid. HEREDOC end end
http_status()
click to toggle source
# File lib/erratum/errors/crud/invalid_association.rb, line 35 def http_status 422 end
source()
click to toggle source
Calls superclass method
Erratum::Errors::Crud#source
# File lib/erratum/errors/crud/invalid_association.rb, line 57 def source super.merge( 'association' => association_name, 'association_id' => association_id, ) end
title()
click to toggle source
# File lib/erratum/errors/crud/invalid_association.rb, line 39 def title 'Association Error' end