设备未处理经过清理的参数

问题描述 投票:0回答:1

以下控制台信息

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

奇怪的是,这两个属性在更新操作下得到处理,尽管未在清理程序中列出。

如何允许这些参数?

ruby-on-rails devise strong-parameters
1个回答
0
投票

根据您的自定义RegistrationsController的位置,将控制器重命名为Users::RegistrationsController < Devise::RegistrationsControllerRegistrationsController < Devise::RegistrationsController。>

© www.soinside.com 2019 - 2024. All rights reserved.