我不是为什么,但是以下代码刚刚停止工作(我什至没有注意到它是如何发生的)
routes.rb
devise_for :users, components: {registrations: 'registrations', sessions: 'sessions'}
registations_controller.rb
class RegistrationsController < Devise::RegistrationsController
before_filter :configure_permitted_parameters
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up).push(:name, :surname, :username, :email, :avatar)
devise_parameter_sanitizer.for(:account_update).push(:name, :surname, :email, :avatar)
end
end
就像我说的那样,以前的一切都很好,但是现在我得到了:
Processing by Devise::RegistrationsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"lvuPOmTRqv6XUQ/O1g4Q9VNvzD7DgGCHocY/OlAvKHEIvWAHvlS982hxSZZzzAESCpmL5QTUcTLw/c9ME/sUFQ==", "user"=>{"name"=>"John", "surname"=>"Doe", "username"=>"foobar", "email"=>"foobar@example.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Register"}
Unpermitted parameters: name, surname, email
配置:
PS:现在我终于明白为什么我应该使用单元测试覆盖我的代码并使用Travis CI
我认为您应该在应用程序控制器而不是注册控制器中尝试“ configure_permitted_parameters”方法。
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up).push(:name, :surname,:username, :email, :avatar)
devise_parameter_sanitizer.for(:account_update).push(:name, :surname, :email, :avatar)
end
end
我帮了我 但为什么?先前的代码发生了什么?
for
从4.1开始不推荐使用该方法。使用此代替:这里是@KinjalShah提供的相同链接,但直接指向有关强参数的部分:github.com/plataformatec/devise#user-content-strong-parameters