Rails I18n:如何添加所有模型基本错误常见的错误翻译键?

时间:2015-07-07 17:27:43

标签: ruby-on-rails rails-i18n

在我目前的应用程序中,我们使用I18n。我必须添加一个:基本错误键,它应该适用于所有型号。 例如:我会在:common_error文件的一个位置添加en.yml,并使用如下,

@user.errors.add(:base, :common_error)
@post.errors.add(:base, :common_error)
..and so on

我真的很担心我是否应该在所有模型中添加:common_error密钥,因为应用程序中存在更多模型。

我当前的en.yml文件如下所示,

en-uk:
  activerecord:
    errors:
      <<: *errors
        models:
          user:
            attributes:
              base:
                some_key: ""
          post:
            attributes:
              base:
                some_key: ""

我不确定是否有一个我找不到的简单解决方案。但任何想法都会受到关注。 提前谢谢!

2 个答案:

答案 0 :(得分:1)

只是不要使用相对翻译键 -

@user.errors.add(:base, t(:common_error) )

如果您将符号传递给errors.add,则翻译将使用模型的范围。

答案 1 :(得分:1)

您可以通过使用models键使用Rails处理其内部错误的相同方式来定义其他错误消息,而不必通过特定的messages添加错误。

en:
  errors:
    messages:
      common_error: 'is common'

这将同时适用于Active Record和Active Model模型。如果只希望将其应用于一个或另一个,则可以将errors嵌套在activerecordactivemodel下,如下所示:

en:
  activemodel:
    errors:
      messages:
        common_error: 'is common'