以下控制台信息
Started POST "/users" for
Processing by RegistrationsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"==", "user"=>{[...], "email_contact"=>"[email protected]", "cap"=>"", "client_retail"=>"true"}, "commit"=>"Register"}
Unpermitted parameters: :email_contact, :client_retail
令人莫名其妙,因为两个不允许的参数(它们是在原始版本之后创建的,但是db被删除,重新创建和迁移了]被固执地忽略(在创建用户时)。UsersController确实包含这些属性
def user_params
params.require(:user).permit(:email, :password, :password_confirmation, :remember_me, [...] :internal, :client_retail, :email_contact)
end
和RegistrationsController一样:
private
def sign_up_params
params.require(:user).permit(:email, :password, :password_confirmation, :remember_me, [...] :internal, :client_retail, :email_contact)
end
def account_update_params
params.require(:user).permit(:email, :password, :password_confirmation, :remember_me, [...] :internal, :client_retail, :email_contact)
end
此外,ApplicationController调用清理器
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:email, :password, :password_confirmation, :nome, :cognome, :email_contact, :client_retail])
devise_parameter_sanitizer.permit(:sign_in, keys: [:login, :password, :password_confirmation])
devise_parameter_sanitizer.permit(:account_update, keys: [:email, :password, :password_confirmation, :current_password])
end
奇怪的是,这两个属性将在更新操作下得到处理,尽管未在清理程序中列出。
如何允许这些参数?
根据您的自定义RegistrationsController的位置,将控制器重命名为Users::RegistrationsController < Devise::RegistrationsController
或RegistrationsController < Devise::RegistrationsController
。>