使用Rails和Devise强参数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (66)

我正在使用设计的rails 4.0分支以及ruby 2.0.0p0和Rails 4.0.0.beta1。

这是一种问题,我正在检查我是否按照正确的方式进行了检查,或者如果有其他事情我应该做。我相信很多转向Rails 4.0的人都面临同样的问题(在Google上搜索类似的东西之后)。

现在使用设计我创建了一个用户模型,我使用上面的要点创建了以下控制器(并确保将其包含在我的路线文件中)。我的额外参数是first_name和last_name。

class Users::RegistrationsController < Devise::RegistrationsController
  def sign_up_params
    params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation)
  end
  def account_update_params
    params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation, :current_password)
  end
  private :sign_up_params
  private :account_update_params
end

还有什么我应该做的?这是从现在开始做事的最佳方式(自从删除attr_accessor之后)。我的表单似乎工作正常(新的和更新)。要点说使用“resource_params”,但总是在我的服务器日志中出现“Unpermitted parameters”错误。

提问于
用户回答回答于
# controllers/users/registrations_controller.rb
class Users::RegistrationsController < Devise::RegistrationsController

  before_filter :configure_permitted_parameters

  protected

  # my custom fields are :name, :heard_how
  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) do |u|
      u.permit(:name, :heard_how,
        :email, :password, :password_confirmation)
    end
    devise_parameter_sanitizer.for(:account_update) do |u|
      u.permit(:name,
        :email, :password, :password_confirmation, :current_password)
    end
  end
end
用户回答回答于

对于Rails 5,Devise4使用如下:

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, :password, :password_confirmation])
  end
end

扫码关注云+社区

领取腾讯云代金券