Кастомные названия аттрибутов модели
Илья • 9 сентября 2008 г.
Всем известно как изменить текст сообщения об ошибке валидации модели. Но не всем известен трюк, как изменить само название атрибута, которое будет отображаться в сообщении об ошибке. Рельсы, к сожалению, нам не предоставляют простого пути решения.
Итак, проблема:

Сообщение об ошибке на русском языке, в то время как название атрибута на английском (причём часто на ломаном английском,
Для того чтобы решить эту проблему, нам понадобиться один маленький файлик — humanized_attributes.rb. Бросаем его в lib/ и подключаем в environment.rb.
Далее в нашей модели создаём константу HUMANIZED_ATTRIBUTES:
class User < ActiveRecord::Base
HUMANIZED_ATTRIBUTES = {
:login => "Имя пользователя"
}
validates_presence_of :login, :message => 'отсутствует'
end
И вуаля:

На самом деле это удобно не только для русифицирования атрибутов, но и когда заказчик хочет чтобы «login» отображался как «user name».
Для пущего удобства, можно обернуть всё это дело плугином с
4 комментария:
Извините, но комментарии для этой статьи уже закрыты.

Якогда-то написал прототип плагина с похожим функционалом, но потом наткнулся на следующий замечательный плагин
http://wiki.rubyonrails.org/rails/pages/Custom+Error+Message
После установки достаточно начать сообщение с символа
validates_presence_of :login, :message => 'Имя пользователя отсутствует'
MVC violation.
Someone, please! Call the MVC authorities.
2pahanix:
Хех, как раз то, что нужно ) Немного пропатченный вариант - http://github.com/gumayunov/custom-err-msg /tree