覆盖Rails验证消息

时间:2018-04-27 18:53:20

标签: ruby-on-rails ruby

如何在Rails中覆盖验证消息? 即使我传递了这样的过程..

validates :my_item, uniqueness: {
      scope: [:name, :type],
      message: -> (object, data) do
        "This item is already taken"
      end,
    }

它仍然将[object]附加到消息的前面。所以这是:"[name of the object] This item is already taken"

编辑:

还尝试在邮件开头添加^。仍然无法正常工作。 "^This item is already taken"

1 个答案:

答案 0 :(得分:2)

不要试图在模型级别覆盖它,而只是利用您实际上尝试调整en区域设置的事实。

config/locales/en.yml中你应该能够做到这样的事情:

en:
  activerecord:
    errors:
      messages:
        taken: "This item is already taken."
      models:
        my_item:
          taken: "This item is already taken."

我没有直接测试此配置,但messages键应该更改所有模型的消息。否则,您可以基于每个模型指定消息。我不相信这会包含对象名称。您可以在Rails Internationalization Guide中找到字段名称列表。