2015-02-12 54 views
2

當前,當某些任意轉換丟失時,導致引用I18n::MissingTranslationData(如config.action_view.raise_on_missing_translations = true所配置)。但是,當翻譯缺失是針對某些模型的屬性時,它會悄悄地將密鑰「轉換」爲該詞。如何在缺少模型屬性轉換時引發錯誤

例如activerecord.attributes.user.first_name獲得「翻譯」到First name

有沒有辦法強制導軌拋出一個異常,在每一個失蹤的翻譯包括本

回答

0

我有同樣的問題,發現這個職位的解決方案:https://stackoverflow.com/a/22191491/410996

可以猴修補human_attribute_name方法來引發錯誤。將此代碼放入初始化程序中:

require 'active_support/core_ext/hash/reverse_merge' 

module ActiveModel 
    module Translation 
    include ActiveModel::Naming 

    def human_attribute_name(attribute, options = {}) 
     defaults = lookup_ancestors.map do |klass| 
     [:"#{self.i18n_scope}.attributes.#{klass.model_name.i18n_key}.#{attribute}", 
     :"#{self.i18n_scope}.attributes.#{klass.model_name.i18n_key.to_s.tr('.', '/')}.#{attribute}"] 
     end.flatten 

     defaults << :"attributes.#{attribute}" 
     defaults << options.delete(:default) if options[:default] 
     defaults << attribute.to_s.humanize if Rails.env.production? # Monkey patch 

     options.reverse_merge! :count => 1, :default => defaults 
     I18n.translate(defaults.shift, options) 
    end 
    end 
end