Разработать не обрабатывать дезинфицированные параметры - PullRequest
0 голосов
/ 16 марта 2020

Следующая информация консоли

Started POST "/users" for 
Processing by RegistrationsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"==", "user"=>{[...], "email_contact"=>"5@mail.ne", "cap"=>"", "client_retail"=>"true"}, "commit"=>"Register"}
Unpermitted parameters: :email_contact, :client_retail

сбивает с толку, так как два недопустимых параметра (они были созданы впоследствии к исходной версии, но БД была отброшена, воссоздана и перенесена) упорно игнорируются (в то время как пользователь становится создан
UsersController действительно включает эти атрибуты

1008

как это делает 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

Как ни странно, эти два атрибута будут обрабатываться в рамках действия обновления, хотя они не перечислены в дезинфицирующем средстве.

Как можно разрешить эти параметры?

1 Ответ

1 голос
/ 16 марта 2020

Переименуйте ваш контроллер в Users::RegistrationsController < Devise::RegistrationsController или RegistrationsController < Devise::RegistrationsController в зависимости от того, где находится ваш пользовательский RegistrationsController.

...