例如,api消费者发送:
"ticket": [{ "param": "value"}]
控制器执行:
params.require(:ticket).permit(:name)
这将返回500
错误:“数组的未定义方法许可”
有没有DRY /最佳实践方法来处理这个问题?我认为应该返回状态400
。
答案 0 :(得分:0)
我认为强大的参数gem应该在内部处理,但它们不是,所以这是我的解决方案
rescue_from NoMethodError do |exception|
if exception.message =~ /undefined method `permit' for/
render_error(message: 'Invalid parameter format.', type: :invalid_parameters, status: :bad_request)
else
raise
end
end
答案 1 :(得分:0)
根据您的解决方案......您可能希望处理特定错误响应的所有可能性。您可以像这样在渲染方法中设置救援,如果存在方法错误或其他错误,则设置未授权:
begin
render json: json, status: 200
rescue_from NoMethodError do |exception|
render :unauthorized
end
rescue => e
render :unauthorized
end