devise_parameter_sanitizer.sanitize()方法用于什么?它与devise_parameter_sanitizer.for()方法有何不同?

时间:2017-07-15 07:58:40

标签: ruby-on-rails devise sanitize

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

2 个答案:

答案 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