0

确实存在一种方法来做这样的事情:

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")
4

1 回答 1

0

我不知道,但很容易将这样的方法添加到所有模型中:

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' 方法。请记住,每次更改方法时,都必须重新启动服务器。

于 2013-09-23T07:17:09.410 回答