我正在使用葡萄,我想访问rescue_from中的请求参数:
class API < Grape::API
rescue_from Grape::Exceptions::ValidationErrors do |e|
rack_response({
end
...
我怎样才能做到这一点?
我成功做到了:
rescue_from :all do |e|
req = Rack::Request.new(env)
ApiCallAudits.create data: {input_params: req.params.as_json}, backtrace: $!.to_s, status: :error
end
你可以尝试这样的事情:
rescue_from Grape::Exceptions::ValidationErrors do |e|
env['api.endpoint'].helper_method
end
婴儿车应该在助手中可用,但我不确定这个技巧https://github.com/intridea/grape/issues/438
如果有人仍然想知道这一点,请提供最新的答案:
rescue_from Grape::Exceptions::ValidationErrors do |e|
env['grape.request'].params
end
context.params
似乎是 2023 年实现这一目标的方法 - 来自 Grape Wiki on 异常处理:
在rescue_from块内,可以通过#context方法访问原始控制器方法(.self接收器)的环境。
例如
rescue_from :all do |e|
user_id = context.params[:user_id]
...
end