我已经将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/

10-11 23:14
查看更多