Ruby Grape:自定义验证错误消息

时间:2016-02-17 11:06:41

标签: ruby ruby-on-rails-4 grape-api

如何更改Grape在验证错误时给出的默认错误消息?

例如 -

params do
    requires :email, allow_blank: false
end

如果我没有在API调用中传递:email,葡萄会给出['email is missing', 'email is empty']的错误消息,但我想将消息覆盖为['Oops! Email is required.']

那么,如何覆盖Grape默认验证规则的默认错误消息。

2 个答案:

答案 0 :(得分:1)

format :json
subject.rescue_from Grape::Exceptions::ValidationErrors do |e|
  error!({ messages: e.full_messages.map { |msg| "Oops!" + msg }}, 400)
end

更新

如果要自定义完整的消息,可以手动编辑葡萄语言环境文件并在应用程序中覆盖它。

Grape locale en.yml

答案 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违反了两次验证,但希望收到一条消息。也许上面的解决方法会起作用。