编辑不应这样做,因此我重新检查了代码,现在可以正常使用了。对不起。 此问题应该关闭
试图在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))
也捕获到异常。
问题是:为什么第一个代码不起作用?