Я хочу иметь возможность установить пользовательское сообщение в методе проверки модели, чтобы уведомить пользователя о неверных входных данных.
Во-первых, я установил пользовательский класс проверки, в котором я переопределяю метод validate_each
таким образом, как это рекомендуется в документации рельсов :
# app/models/user.rb
# a custom validator class
class IsNotReservedValidator < ActiveModel::EachValidator
RESERVED = [
'admin',
'superuser'
]
def validate_each(record, attribute, value)
if RESERVED.include? value
record.errors[attribute] <<
# options[:message] assigns a custom notification
options[:message] || 'unfortunately, the name is reserved'
end
end
end
Вторичное, я пытаюсь передать пользовательское сообщение методу validates
двумя различными способами:
# a user model
class User < ActiveRecord::Base
include ActiveModel::Validations
ERRORS = []
begin
validates :name,
:is_not_reserved => true,
# 1st try to set a custom message
:options => { :message => 'sorry, but the name is not valid' }
rescue => e
ERRORS << e
begin
validates :name,
:is_not_reserved => true,
# 2nd try to set a custom message
:message => 'sorry, but the name is not valid'
rescue => e
ERRORS << e
end
ensure
puts ERRORS
end
end
Но ни один из этих методов не работает:
>> user = User.new(:name => 'Shamaoke')
Unknown validator: 'options'
Unknown validator: 'message'
Где и как я могу установить пользовательские сообщения для пользовательских валидаторов?
Спасибо.
Debian GNU /Linux 5.0.6;
Ruby 1.9.2;
Ruby on Rails 3.0.0.