I18n для ошибок атрибутов

Существует ли способ сделать что-то вроде этого:

Model.human_attribute_name :attr

а с ошибками?

Что-то вроде этого...

Model.human_error_name :attr, :error

Например:

Ticket.human_error_name :ticket_type_id, :no_tickets_left

Я хочу избежать этого в своих взглядах:

I18n.t("activerecord.errors.models.ticket.attributes.ticket_type_id.no_tickets_left")

person Leantraxxx    schedule 20.09.2013    source источник


Ответы (1)


Не то, чтобы я знал, но очень легко добавить такой метод ко всем вашим моделям:

module Hemju
  module HumanErrorName
    extend ActiveSupport::Concern

    def human_error_name(attr, error)
      I18n.t("activerecord.errors.models.#{self.class.to_s}.attributes.#{attr}.#{error}")
    end
  end
end
ActiveRecord::Base.send(:include, Hemju::HumanErrorName)

Активация расширения в инициализаторе:

require 'hemju/human_error_name'

Теперь у каждой модели есть метод «human_error_name». Помните, что каждый раз, когда вы меняете метод, вам необходимо перезапустить сервер.

person hjuskewycz    schedule 23.09.2013