如何访问Rails的'不能为空'错误消息?

时间:2011-10-12 14:53:21

标签: ruby-on-rails internationalization

验证can't be blank失败时访问Rails的默认:presence => true错误消息的API是什么?

我的模型设置如下:

class TextDocument < Document
  validate :content_not_blank   # 'content' is an attribute

  private
    def content_not_blank
      if content.blank? 
        errors.add(:content, ....?) # I want to access 'can't be blank'
      end
    end
end

3 个答案:

答案 0 :(得分:25)

I18n.t('errors.messages.blank')

应该给你你想要的东西。

答案 1 :(得分:22)

假设您使用的是标准的yaml翻译,您可以在ActiveModel

中找到该文件

要覆盖它,您需要在config/locales文件夹中删除一个文件,例如:

en:
  errors:
    messages:
      blank: "can't be whatever your custom message"

答案 2 :(得分:1)

您可以使用默认方法执行此操作:

validates_presence_of(:content)

这将在当前本地生成正确的消息(不能为空)(如果您设置了config / locales / ..yml文件

如果你真的想编写自己的验证器

errors.add(:content, I18n.translate(:blank))