我已经将Devise添加到我的Rails 4应用程序中,并成功将用户名等添加到了我的用户模型中。此外,我能够使用lazy way™存储这些字段,即
class ApplicationController < ActionController::Base
before_filter :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:email, :password, :password_confirmation, :firstname, :middlename, :lastname) }
end
end
但是,我尝试了
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:email, :password, :password_confirmation, :firstname, :middlename, :lastname) }
devise_parameter_sanitizer.for(:edit) { |u| u.permit(:email, :password, :password_confirmation, :firstname, :middlename, :lastname) }
end
但这不能按预期方式工作(edit操作调用时未存储用户名)。为了使它正常工作,我还需要做其他事情吗?谢谢!
最佳答案
再一次,这是阅读手册的问题...
魔术字是:account_update
,因此工作版本变为
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:email, :password, :password_confirmation, :firstname, :middlename, :lastname, :nickname) }
devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:email, :password, :password_confirmation, :current_password, :firstname, :middlename, :lastname, :nickname) }
end
请注意,如果您要使用非标准参数登录,那么您要查找的单词就是
:sign_in
(与预期相同)。关于devise - 如何为编辑操作指定devise_parameter_sanitizer?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19791531/