首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >devise_parameter_sanitizer.sanitize()方法用来做什么?它与devise_parameter_sanitizer.for()方法有什么不同?

devise_parameter_sanitizer.sanitize()方法用来做什么?它与devise_parameter_sanitizer.for()方法有什么不同?
EN

Stack Overflow用户
提问于 2017-07-15 15:58:40
回答 1查看 359关注 0票数 1

我找不到devise_parameter_sanitizer.sanitize()方法的用法。请帮助我理解它的用法,以及它与devise_parameter_sanitizer.for()方法的区别。

EN

回答 1

Stack Overflow用户

发布于 2020-12-04 14:09:16

devise使用the Devise::ParameterSanitizer class中定义的devise_parameter_sanitizer.sanitize()方法来过滤给定操作的控制器中允许的参数。

它与Rails的strong parameters特性非常相似。

您可以使用它来允许比devise gem定义的默认字段更多的字段。

在编写本文时,the gem documentation中描述的缺省操作->属性如下所示

代码语言:javascript
复制
DEFAULT_PERMITTED_ATTRIBUTES = {
  sign_in: [:password, :remember_me],
  sign_up: [:password, :password_confirmation],
  account_update: [:password, :password_confirmation, :current_password]
}

基本上,作为shown in the gem's documentation permit usage examples,您传递要更改其允许属性的:action,然后使用字段列表对其调用permit()

代码语言:javascript
复制
# Adding new parameters to be permitted in the `sign_up` action.
devise_parameter_sanitizer.permit(:sign_up, keys: [:subscribe_newsletter])

# Removing the `password` parameter from the `account_update` action.
devise_parameter_sanitizer.permit(:account_update, except: [:password])

# Using the block form to completely override how we permit the
# parameters for the `sign_up` action.
devise_parameter_sanitizer.permit(:sign_up) do |user|
  user.permit(:email, :password, :password_confirmation)
end

还可以看看创业板的explains pretty well all of thisREADME.md

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45115944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档