如何解决Rails - 设计注册参数消毒
我正在设置 devise 并注意到它有一个 configure_sign_up_params
方法。
我似乎无法让它工作,我查看了设计的源代码并阅读了文档。 https://www.rubydoc.info/github/plataformatec/devise/Devise/ParameterSanitizer https://github.com/heartcombo/devise/blob/master/lib/devise/parameter_sanitizer.rb
我尝试了两种不同的方法,它们都应该允许自定义属性。都不行。
1.
devise_parameter_sanitizer.permit(:sign_up,keys: [:email,:name,:password,:password_confirmation])
devise_parameter_sanitizer.permit(:sign_up) do |sign_up_params|
sign_up_params.permit({ roles: [] },:email,:password_confirmation)
end
我希望这会返回带有 permitted: true
键值对的参数
我得到的是:
<ActionController::Parameters {"name"=>"user1","email"=>"user@gmail","password"=>"password123","password_confirmation"=>"password123","controller"=>"users/registrations","action"=>"create"} permitted: false>
根据测试,它看起来希望我的参数采用以下格式: https://github.com/heartcombo/devise/blob/dfbed22cee617992e5f846fdef58b724b6b32ff9/test/parameter_sanitizer_test.rb#L70
{ user: { name: "user1",email: "user@gmail" ...}
有人在这里推荐了类似的东西: https://github.com/scambra/devise_invitable/issues/518#issuecomment-70781474
如果我发送一个请求,它看起来像来自服务器上的客户端,它看起来像:
<ActionController::Parameters {"name"=>"user1","email"=>"user@gmail.com","action"=>"create"} permitted: false>
我必须对格式进行如此多的更改似乎很奇怪,我想遵循最佳实践,但如果我必须跳过箍以使用 Devise 的构建,似乎我应该自己处理参数-in 方法。
正在寻找一种标准的、最佳实践的方法来处理这个问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。