如何在rails活动记录验证中本地化自定义错误消息?

时间:2018-06-05 12:18:08

标签: ruby-on-rails validation ruby-on-rails-4 activerecord rails-activerecord

具体而言,我试图本地化自定义方法示例here。我找到了类似的question,但我不知道如何在 errors.add()方法中传递:message 参数。我尝试过这样的事情:

errors.add(:discount, message: :greater_than_value_error)

但它打印出来:

{:message=>:greater_than_value_error} 

而不是打印.yml文件中的实际错误消息。

这里的语法应该是什么?

我的.yml文件就像这样(不确定下面的这篇文章是否100%准确):

activerecord: #try to use activemodel here
  errors:
    models:
      invoice: # or namespace/model_name
        attributes:
          discount:
            greater_than_value_error: "can't be greater than total value"

2 个答案:

答案 0 :(得分:2)

尝试使用rails 4跟踪errors.add :field_name, :message

errors.add(:discount, :greater_than_value_error)

答案 1 :(得分:0)

如果您正在编写自定义验证,那么您需要进行实际翻译,

errors.add(:discount, I18n.t(path_to_locale_text))

只有在使用内置方法时,才能将标准验证消息(如预定义验证器greater_than_value_error)国际化。

validates_numericality_of :discount :greater_than => limit

查看https://stackoverflow.com/a/4453350/1232447了解详情。