如何在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"
答案 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中找到字段名称列表。