Class: ActiveModel::Errors

Inherits:
Object
  • Object
show all
Defined in:
lib/activemodel_detailed_errors/load_error_details_support.rb

Constant Summary collapse

MESSAGE_OPTIONS =
[:message]

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(base) ⇒ Errors

Returns a new instance of Errors.



7
8
9
10
11
# 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

Instance Attribute Details

#detailsObject

Returns the value of attribute details.



5
6
7
# File 'lib/activemodel_detailed_errors/load_error_details_support.rb', line 5

def details
  @details
end

Instance Method Details

#add(attribute, message = :invalid, options = {}) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
# 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 = {}) ⇒ Boolean

Returns:

  • (Boolean)


42
43
44
45
46
# 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

#clearObject



19
20
21
22
# File 'lib/activemodel_detailed_errors/load_error_details_support.rb', line 19

def clear
  messages.clear
  details.clear
end

#deleteObject



24
25
26
27
# File 'lib/activemodel_detailed_errors/load_error_details_support.rb', line 24

def delete
  messages.delete(key)
  details.delete(key)
end

#initialize_dup(other) ⇒ Object

:nodoc:



13
14
15
16
17
# File 'lib/activemodel_detailed_errors/load_error_details_support.rb', line 13

def initialize_dup(other) # :nodoc:
  @messages = other.messages.dup
  @details  = other.details.deep_dup
  super
end