2016-02-27 11 views
6

私は動作を停止しないでない理由はなく、次のコード(私もそれが起こったのか気づいていなかった)工夫:許可されていないパラメータ

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 

は、everytingは罰金の前に働いていたが、今私が取得しています:

Processing by Devise::RegistrationsController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"lvuPOmTRqv6XUQ/O1g4Q9VNvzD7DgGCHocY/OlAvKHEIvWAHvlS982hxSZZzzAESCpmL5QTUcTLw/c9ME/sUFQ==", "user"=>{"name"=>"John", "surname"=>"Doe", "username"=>"foobar", "email"=>"[email protected]", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Register"} 
Unpermitted parameters: name, surname, email 

Cofiguration:

  • Railsは4.2.5
  • 工夫3.5.6

PS:私はユニットテストで自分のコードをカバーしなければならない、なぜ今、私はfinnaly理解し、トラビスCIを使用する

答えて

6

私はあなたが "configure_アプリケーションコントローラの登録済みコントローラの代わりに「permitted_pa​​rameters」メソッドを使用します。

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 
+0

私は助けてくれました。しかし、なぜ?以前のコードはどうなりましたか? – Viktor

+0

https://github.com/plataformatec/deviseこちらをご覧ください。これはあなたを助けるかもしれません。 –

+0

'for'メソッドは4.1以降で廃止されました。代わりにこれを使用してください: – dexter

5

forのメソッドは、4.1以降廃止予定です。これを代わりに使用してください:

class ApplicationController < ActionController::Base  
    before_action :configure_permitted_parameters, if: :devise_controller? 

    protected 

    def configure_permitted_parameters 
    attributes = [:name, :surname,:username, :email, :avatar] 
    devise_parameter_sanitizer.permit(:sign_up, keys: attributes) 
    devise_parameter_sanitizer.permit(:account_update, keys: attributes) 
    end 
end 
+0

これは私のために働いていません。 –