[英]Customizing Devise with Strong Parameters
我正在使用Rails 4.0.0和Devise 3.0.2並嘗試在Devise README中按照此指令配置具有強參數的Devise。
我在application_controller.rb
編寫了這樣的代碼
class ApplicationController < ActionController::Base
before_filter :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) << :nick
end
end
然后我訪問了http://localhost:3000/users/sign_up
。 我NoMethodError in Devise::RegistrationsController#new
得到了NoMethodError in Devise::RegistrationsController#new
,它說:
undefined方法
<<' for {}:ActionController::Parameters
並指向我寫的devise_parameter_sanitizer.for(:sign_up) << :nick
的確切行
有什么我做錯了嗎? 謝謝你的幫助。
嘗試:
class ApplicationController < ActionController::Base
...
before_filter :configure_permitted_parameters, if: :devise_controller?
...
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u|
u.permit(:email, :password, :password_confirmation, :nick)
}
end
這個對我有用! :d
正如Jose Valim所說 ,它是Devise 3.1.0.rc功能,這就是為什么它不起作用。 您必須使用README中的其他語法。
一個問題完全符合您的問題: #2574:devise_parameter_sanitizer.for(:sign_up)<<:出現錯誤 。
事實上,將自定義字段添加到強參數中的方法就是Devise 3.1的新功能。
由於Rubygems.org中的當前版本是3.0.3
,因此您暫時不能在rails項目中使用此方法。 你必須覆蓋這樣的默認值:
devise_parameter_sanitizer.for(:sign_up) do |u|
u.permit :email, :password, :password_confirmation, :first_name, :last_name
end
但是如果你真的需要,你可以編輯你的Gemfile並替換這一行
gem 'devise', '3.0.3'
這一個:
gem 'devise', github: 'plataformatec/devise', branch: 'master'
然后,您可以輕松添加自定義字段:
# Single field
devise_parameter_sanitizer.for(:account_update) << :first_name
# Multiple fields at a time
devise_parameter_sanitizer.for(:account_update) << [:first_name, :last_name]
但請注意 ,目前這是一個候選版本 : 3.1.0 RC1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.