class ActiveModel::Errors

Constants

MESSAGE_OPTIONS

Attributes

details[RW]

Public Class Methods

new(base) click to toggle source
# File lib/activemodel_detailed_errors/load_error_details_support.rb, line 7
def initialize(base)
  @base     = base
  @messages = Hash.new { |messages, attribute| messages[attribute] = [] }
  @details  = Hash.new { |details, attribute| details[attribute] = [] }
end

Public Instance Methods

add(attribute, message = :invalid, options = {}) click to toggle source
# File lib/activemodel_detailed_errors/load_error_details_support.rb, line 29
def add(attribute, message = :invalid, options = {})
  message = message.call if message.respond_to?(:call)
  detail  = normalize_detail(attribute, message, options)
  message = normalize_message(attribute, message, options)
  if exception = options[:strict]
    exception = ActiveModel::StrictValidationFailed if exception == true
    raise exception, full_message(attribute, message)
  end

  details[attribute.to_sym] << detail
  self[attribute] << message
end
added?(attribute, message = :invalid, options = {}) click to toggle source
# File lib/activemodel_detailed_errors/load_error_details_support.rb, line 42
def added?(attribute, message = :invalid, options = {})
  message = message.call if message.respond_to?(:call)
  message = normalize_message(attribute, message, options)
  self[attribute].include? message
end
clear() click to toggle source
# File lib/activemodel_detailed_errors/load_error_details_support.rb, line 19
def clear
  messages.clear
  details.clear
end
delete() click to toggle source
# File lib/activemodel_detailed_errors/load_error_details_support.rb, line 24
def delete
  messages.delete(key)
  details.delete(key)
end

Private Instance Methods

normalize_detail(attribute, message, options) click to toggle source
# File lib/activemodel_detailed_errors/load_error_details_support.rb, line 50
def normalize_detail(attribute, message, options)
  { error: message }.merge(options.except(*CALLBACKS_OPTIONS + MESSAGE_OPTIONS))
end