我怎么知道:sign_up和account_update将在这里使用?

时间:2017-08-05 06:21:43

标签: ruby-on-rails devise

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

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:first_name, :last_name, :email])
    devise_parameter_sanitizer.permit(:account_update, keys: [:first_name, :last_name, :phone, :email, bank_attributes: [:bank_name, :bank_account]])
  end
end

1 个答案:

答案 0 :(得分:0)

可能的值是Devise::ParameterSanitizer的一部分,%i(sign_up account_update sign_in)devise_controller?是检查当前控制器是否继承自DeviseController的便捷方法。

基本上,您最终会为使用configure_permitted_parameters方法设计支持的每个操作配置允许的参数。

但是,建议的方法是使用这样的初始值设定项:

# config/initializers/devise_permitted_parameters.rb
module DevisePermittedParameters

  extend ActiveSupport::Concern

  included do
    before_action :configure_permitted_parameters
  end

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.permit(:sign_up, keys: [:first_name, :last_name, :email])
    devise_parameter_sanitizer.permit(:account_update, keys: [:first_name, :last_name, :phone, :email, bank_attributes: [:bank_name, :bank_account]])
  end

end

DeviseController.send :include, DevisePermittedParameters