Имена человеческих атрибутов в Rails 3.x?

Возможный дубликат:
Заголовок атрибута пользовательской модели (название столбца) в Ruby on Rails

Я использую это решение в Rails 2.x навсегда:

   HUMANIZED_ATTRIBUTES = {
    :email => "E-mail address"
  }

  def self.human_attribute_name(attr)
    HUMANIZED_ATTRIBUTES[attr.to_sym] || super
  end

но это вызывает странные ошибки при получении errors из экземпляра ActiveRecord. Каков правильный способ получить хорошие, удобочитаемые имена в Rails 3.x?

Ответ 1

Я думаю, что правильным подходом Rails 3 было бы использовать перевод api, но я использую human_attribute_name следующим образом:

def self.human_attribute_name(attr, options = {})
  HUMANIZED_ATTRIBUTES[attr.to_sym] || super
end

Вызов супер может ожидать, что аргумент параметров будет там.

Ответ 2

Использование human_attribute_name с каркасом I18n более просто, я думаю:

На ваш взгляд: User.human_attribute_name ( "email" )

В вашем языковом yml файле:

en:
  activerecord:
    attributes:
      user:
        email: E-mail address