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