是否有办法做这样的事情:
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")
答案 0 :(得分: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'方法。请记住,每次更改方法时,都必须重新启动服务器。