![](/img/trans.png)
[英]Rails 5, Undefined method `for' for #<Devise on line devise_parameter_sanitizer.for
[英]What is the devise_parameter_sanitizer.sanitize() method used for? And how does it differ from the devise_parameter_sanitizer.for() method?
我找不到 devise_parameter_sanitizer.sanitize() 方法的使用。 請幫助我理解它的用途,以及它與 devise_parameter_sanitizer.for() 方法的不同之處。
對於設計 4+ 使用
devise_parameter_sanitizer.permit()
在Devise::ParameterSanitizer
類中定義的devise_parameter_sanitizer.sanitize()
方法被設計用於從其控制器過濾給定操作的允許參數。
它與 Rails 的強參數特性非常相似。
您可以使用它來允許比設計 gem 定義的默認字段更多的字段。
在撰寫本文時, gem 文檔中描述了以下默認操作 -> 屬性:
DEFAULT_PERMITTED_ATTRIBUTES = {
sign_in: [:password, :remember_me],
sign_up: [:password, :password_confirmation],
account_update: [:password, :password_confirmation, :current_password]
}
基本上,如gem 的文檔permit
用法示例中所示,您傳遞: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
還可以查看 gem 的README.md
,它很好地解釋了所有這些。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.