为什么 devise sanitizer 返回空哈希值

Why is devise sanitizer returning an empty hash

我正在编写一个 API-only Rails 5 应用程序并使用 devise-jwt(和设计)gem 进行用户身份验证。我正在尝试在我的自定义 registrations_controller 中配置强参数。在 application_controller.rb:

before_action :configure_permitted_parameters, if: :devise_controller?

def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:first_name, :last_name, :username, :email])
end

registrations_controller.rb中:

def create
    build_resource(sign_up_params)
    resource.save
    #json response defined in application_controller.rb
    render_resource(resource)
end

这是当我通过 Postman 向 API 发出 POST 请求时控制台的输出:

Parameters: {"first_name"=>"john", "last_name"=>"stones", "username"=>"johnstones", "email"=>"john@stones.com"}

这是打印 params 到控制台的输出:

<ActionController::Parameters {"first_name"=>"john", "last_name"=>"stones", "username"=>"johnstones", "email"=>"john@stones.com", "controller"=>"registrations", "action"=>"create"} permitted: false>

尽管如此,当我执行 devise_parameter_sanitizer.sanitize(:sign_up) 时,我得到一个空哈希,并且我前面提到的 POST 抛出我为具有空白字段而设置的验证错误。请帮我弄清楚我错过了什么,谢谢。

(Rails 5.2/设计 4.2)

您的参数散列中缺少参数 user

{"user": {"first_name"=>"john", "last_name"=>"stones", "username"=>"johnstones", "email"=>"john@stones.com"} }