class ActiveModel::Error
Active Model Ошибка
Представляет одну отдельную ошибку
Константы
- CALLBACKS_OPTIONS
- MESSAGE_OPTIONS
Атрибуты
Атрибут base, к которому относится ошибка
Объект, к которому относится ошибка
Опции, предоставленные при вызове errors#add
Необработанное значение, предоставленное в качестве второго параметра при вызове errors#add
Тип ошибки, по умолчанию :invalid, если не указано иное
Публичные методы класса
# 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
Публичные методы экземпляра
# File activemodel/lib/active_model/error.rb, line 149
def details
{ error: raw_type }.merge(options.except(*CALLBACKS_OPTIONS + MESSAGE_OPTIONS))
end Возвращает детали ошибки.
error = ActiveModel::Error.new(person, :name, :too_short, count: 5)
error.details
# => { error: :too_short, count: 5 }
# File activemodel/lib/active_model/error.rb, line 159 def full_message self.class.full_message(attribute, message, @base) end
Возвращает полное сообщение об ошибке.
error = ActiveModel::Error.new(person, :name, :too_short, count: 5) error.full_message # => "Name is too short (minimum is 5 characters)"
# 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 Проверяет, соответствует ли ошибка предоставленным attribute, type, и options.
Пропущенные параметры не проверяются на соответствие.
# 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 Возвращает сообщение об ошибке.
error = ActiveModel::Error.new(person, :name, :too_short, count: 5) error.message # => "is too short (minimum is 5 characters)"
# 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
Проверяет, точно ли ошибка соответствует предоставленным attribute, type, и options.
Все параметры должны быть равны собственным атрибутам ошибки, чтобы считаться точным соответствием.
Защищённые методы экземпляра
# File activemodel/lib/active_model/error.rb, line 204 def attributes_for_hash [@base, @attribute, @raw_type, @options.except(*CALLBACKS_OPTIONS)] end
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.