使用强参数自定义设计

Jun*_*hou 6 ruby-on-rails devise strong-parameters ruby-on-rails-4

我正在使用Rails 4.0.0和Devise 3.0.2并尝试在Devise README中按照此指令配置具有强参数的Devise.

我在这里写了这样的代码 application_controller.rb

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

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) << :nick
  end
end
Run Code Online (Sandbox Code Playgroud)

然后我去了http://localhost:3000/users/sign_up.我有一个NoMethodError in Devise::RegistrationsController#new,说:

未定义的方法 <<' for {}:ActionController::Parameters

并指向我写的确切行 devise_parameter_sanitizer.for(:sign_up) << :nick

有什么我做错了吗?谢谢你的帮助.

Car*_*ira 5

尝试:

    class ApplicationController < ActionController::Base
      ...
      before_filter :configure_permitted_parameters, if: :devise_controller?   
      ...
      def configure_permitted_parameters
         devise_parameter_sanitizer.for(:sign_up) { |u| 
            u.permit(:email, :password, :password_confirmation, :nick) 
         }
      end
Run Code Online (Sandbox Code Playgroud)

这个对我有用!:d


Raf*_*lak 4

正如Jose Valim 所说,这是 Devise 3.1.0.rc 功能,这就是它不起作用的原因。您必须使用自述文件中的其他语法。