class ActiveModel::Error
Active Model Error
Represents one single error
Constants
Attributes
[R] | attribute |
The attribute of |
[R] | base |
The object which the error belongs to |
[R] | options |
The options provided when calling |
[R] | raw_type |
The raw value provided as the second parameter when calling |
[R] | type |
The type of error, defaults to |
Public class methods
Source code GitHub
# File activemodel/lib/active_model/error.rb, line 103
def initialize(base, attribute, type = :invalid, **options)
@base = base
@attribute = attribute
@raw_type = type
@type = type || :invalid
@options = options
end
Public instance methods
Alias for:
details
.
Also aliased as:
detail
.
Returns the error details.
error = ActiveModel::Error.new(person, :name, :too_short, count: 5)
error.details
# => { error: :too_short, count: 5 }
Source code GitHub
# File activemodel/lib/active_model/error.rb, line 149
def details
{ error: raw_type }.merge(options.except(*CALLBACKS_OPTIONS + MESSAGE_OPTIONS))
end
Returns the full error message.
error = ActiveModel::Error.new(person, :name, :too_short, count: 5)
error.full_message
# => "Name is too short (minimum is 5 characters)"
Source code GitHub
# File activemodel/lib/active_model/error.rb, line 159
def full_message
self.class.full_message(attribute, message, @base)
end
See if error matches provided attribute
, type
, and options
.
Omitted params are not checked for a match.
Source code GitHub
# File activemodel/lib/active_model/error.rb, line 166
def match?(attribute, type = nil, **options)
if @attribute != attribute || (type && @type != type)
return false
end
options.each do |key, value|
if @options[key] != value
return false
end
end
true
end
Returns the error message.
error = ActiveModel::Error.new(person, :name, :too_short, count: 5)
error.message
# => "is too short (minimum is 5 characters)"
Source code GitHub
# File activemodel/lib/active_model/error.rb, line 135
def message
case raw_type
when Symbol
self.class.generate_message(attribute, raw_type, @base, options.except(*CALLBACKS_OPTIONS))
else
raw_type
end
end
See if error matches provided attribute
, type
, and options
exactly.
All params must be equal to Error’s own attributes to be considered a strict match.
Source code GitHub
# File activemodel/lib/active_model/error.rb, line 184
def strict_match?(attribute, type, **options)
return false unless match?(attribute, type)
options == @options.except(*CALLBACKS_OPTIONS + MESSAGE_OPTIONS)
end
Protected instance methods
Source code GitHub
# File activemodel/lib/active_model/error.rb, line 204
def attributes_for_hash
[@base, @attribute, @raw_type, @options.except(*CALLBACKS_OPTIONS)]
end