我无法找到devise_parameter_sanitizer.sanitize()方法的用法。请帮助我理解它的用法,以及它与devise_parameter_sanitizer.for()方法的区别。
答案 0 :(得分:0)
对于Devise 4+使用
devise_parameter_sanitizer.permit()
答案 1 :(得分:0)
在设计中使用the Devise::ParameterSanitizer
class中定义的devise_parameter_sanitizer.sanitize()
方法,以便为给定操作从其控制器中过滤允许的参数。
它与Rails strong parameters功能非常相似。
您可以使用它来允许比devise gem定义的默认字段更多的字段。
在撰写本文时,默认操作->属性如下the gem documentation中所述:
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()
:
# 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 this中的README.md
。