Одним из способов полного контроля над сообщениями является использование пользовательского блока validate
в модели. например чтобы проверить, что поле не пустое, это будет выглядеть так:
class MyModel < ActiveRecord::Base
validate do |model|
model.errors.add_to_base("My Custom message") if user.field.blank?
end
end
add_to_base
предназначен для добавления сообщений, не связанных с конкретным отдельным полем (например, если комбинация нескольких полей недопустима). Это означает, что CSS, чтобы выделить ваше неверное поле, не будет добавлен. Вы можете обойти это, добавив нулевое сообщение к ошибкам для вашего поля, например,
model.errors.add(:field, nil)
В качестве альтернативы, проверьте custom-err-message плагин - этот плагин дает вам возможность отказаться от префиксного имени сообщения об ошибке проверки с именем атрибута.
Обновление:
add_to_base
устарела начиная с Rails 3. Вместо этого можно использовать следующее:
model_instance.errors.add(:base, "Msg")
Ссылка: https://apidock.com/rails/ActiveRecord/Errors/add_to_base