ruby葡萄验证不起作用

时间:2015-08-18 15:09:19

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

我写requires,就像这样

params do
    requires :user_id, :type => Integer
    optional :page, :type => Integer, :default => 1
    optional :per_page, :type => Integer, :default => 20
end

我写了rescue_from

rescue_from :all do |e|
  case e
  when Grape::Exceptions::ValidationErrors
    error!({ messages: e.full_messages }, 400)
  else
    Rails.logger.error "Api Error: #{e}"
    Rails.logger.error "#{e.backtrace.join("\n")}"
    error!({ messages: "errors" }, 500)
  end
end

但如果没有Grape::Exceptions::ValidationErrors

,我无法抓住params[:user_id]

1 个答案:

答案 0 :(得分:0)

我不知道为什么你的代码不起作用,但我可以提供另一个有效的解决方案:明确地救援验证错误(在rescue_from:all之上)。

rescue_from Grape::Exceptions::ValidationErrors do |e|
  error!({ messages: e.full_messages }, 400)
end

rescue_from :all do |e|
  Rails.logger.error "Api Error: #{e}"
  Rails.logger.error "#{e.backtrace.join("\n")}"
  error!({ messages: "errors" }, 500)
end