簡體   English   中英

devise_parameter_sanitizer.sanitize() 方法是做什么用的? 它與 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM