class TerRor::Record

Public Instance Methods

error_codes() click to toggle source
# File lib/ter_ror/record.rb, line 3
def error_codes
  @error_codes ||= ancestor_names.map { |class_name|
    TerRor.codes.get(class_name, *error_names)
  }.compact.reduce(&:merge)
end

Private Instance Methods

ancestor_names() click to toggle source
# File lib/ter_ror/record.rb, line 11
def ancestor_names
  @ancestor_names ||= [].tap do |classes|
    root = defined?(ApplicationRecord) ? ApplicationRecord : ActiveRecord::Base

    klass = __getobj__.class

    loop do
      classes.unshift klass.model_name.singular
      klass = klass.superclass

      break if klass == root
    end
  end
end
error_names() click to toggle source
# File lib/ter_ror/record.rb, line 26
def error_names
  @error_names ||= errors.details.map { |field, errors|
    errors.map { |error|
      "#{field}_#{error[:error]}"
    }
  }.flatten
end