Вы можете иметь собственные сообщения без написания собственного метода проверки. Просто добавьте :message
:
validates_presence_of :prod_price, :message => "Product price can't be blank"
Если вы хотите пропустить проверку численности, когда prod_price
отсутствует, добавьте: allow_nil:
validates_presence_of :prod_price, :message => "Product price can't be blank"
validates_numericality_of :prod_price, :allow_nil => true
Тогда проверка чисел не будет выполняться, если отсутствует prod_price
.
EDIT:
Подождите, вы не хотите, чтобы имя поля отображалось в сообщении об ошибке, не так ли? Я пропустил это. Так что вам все-таки понадобится пользовательская проверка.
РЕДАКТИРОВАТЬ # 2:
Хорошо, как насчет этого:
protected
def validate
if prod_price.blank?
errors.add "Product price can't be blank"
else
begin
Integer(attributes_before_type_cast["prod_price"])
rescue ArgumentError
errors.add "Product price must be a number"
end
end
end