强参数ParameterMissing异常冒泡

时间:2019-07-19 07:57:17

标签: ruby-on-rails exception

编辑不应这样做,因此我重新检查了代码,现在可以正常使用了。对不起。 此问题应该关闭

试图在Rails 5.2 API应用程序中捕获ParameterMissing异常(参数未包括 :user哈希)

    def create
      begin
        user = User.create!(user_params)
        render json: { user: user }, status: 201
      rescue ActionController::ParameterMissing => e
        render json: { errors: { e.param => [e.message] } }, status: 422
      rescue ActiveRecord::RecordInvalid => e
        render json: { errors: e.record.errors }, status: 422
      rescue Exception => e
        render json: { errors: e }, status: 422
      end
    end

    private
    def user_params
      params.require(:user).permit(:name, :email, :password, :password_confirmation)
    end

日志表明有异常,没有捕获到异常

ActionController::ParameterMissing (param is missing or the value is empty: user):

user_params方法更改为

  def user_params
    begin
      params.require(:user).permit(:name, :email, :password, :password_confirmation)
    rescue ActionController::ParameterMissing => e
      raise e
    end
  end

该异常被create方法

捕获

将用户创建行更改为

  user = User.create!(params.require(:user).permit(:name, :email, :password, :password_confirmation))

也捕获到异常。

问题是:为什么第一个代码不起作用?

0 个答案:

没有答案