如何更改Grape在验证错误时给出的默认错误消息?
例如 -
params do
requires :email, allow_blank: false
end
如果我没有在API调用中传递:email
,葡萄会给出['email is missing', 'email is empty']
的错误消息,但我想将消息覆盖为['Oops! Email is required.']
那么,如何覆盖Grape默认验证规则的默认错误消息。
答案 0 :(得分:1)
format :json
subject.rescue_from Grape::Exceptions::ValidationErrors do |e|
error!({ messages: e.full_messages.map { |msg| "Oops!" + msg }}, 400)
end
更新
如果要自定义完整的消息,可以手动编辑葡萄语言环境文件并在应用程序中覆盖它。
答案 1 :(得分:0)
似乎原始答案是完全错误的:
https://github.com/ruby-grape/grape#custom-validation-messages
在OP的示例中,应该使用类似的方法
params do
requires :email, allow_blank: { false, message: '' }, message 'Oops! Email is required.'
end
棘手的部分是OP违反了两次验证,但希望收到一条消息。也许上面的解决方法会起作用。