繁体   English   中英

为什么设计消毒剂返回空哈希

[英]Why is devise sanitizer returning an empty hash

我正在编写仅API的Rails 5应用程序,并使用devise-jwt(和devise)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 / Devise 4.2)

您的参数哈希中缺少参数user

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM