设计:在注册控制器中更改参数

时间:2014-07-06 21:38:49

标签: ruby-on-rails ruby-on-rails-4 devise

我希望在设置create的{​​{1}}动作中保存模型对象之前更改参数

registrations_controller

问题是我无法更改class RegistrationsController < Devise::RegistrationsController before_filter :configure_permitted_parameters def create phone = params[:user][:phone] replacements = [ [' ', ''], ['-', ''], ['(', ''], [')', ''], ['+', ''] ] params[:user][:phone] = replacements.each { |replacement| phone.gsub!(replacement[0], replacement[1]) } super end protected def configure_permitted_parameters devise_parameter_sanitizer.for(:sign_up) do |u| u.permit(:name, :surname, :patronymic, :username, :phone, :email, :password, :password_confirmation) end devise_parameter_sanitizer.for(:account_update) do |u| u.permit(:name, :surname, :patronymic, :username, :phone, :email, :password, :password_confirmation, :current_password) end end end ,因为它未被允许:params[:user][:phone]。我得到params后如何改变它?谢谢!

1 个答案:

答案 0 :(得分:0)

由于Rails强参数,因此不允许这样做。请参阅Devise Github page中的“强参数”部分。

长话短说,这样的东西应放在你的ApplicationController中,而不是Devise控制器:

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

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) << :phone
  end
end