首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带有Rails和Devise的强参数

带有Rails和Devise的强参数
EN

Stack Overflow用户
提问于 2013-05-05 06:29:38
回答 3查看 31.8K关注 0票数 57

我使用的是devise的Rails4.0分支,以及Ruby2.0.0p0和Rails4.0.0.beta1。

这就是我要检查的问题,我是否以正确的方式做了这件事,或者是否还有其他我应该做的事情。我敢肯定很多迁移到Rails4.0的人都面临着同样的问题(在谷歌上搜索了类似的东西之后)。

我已经阅读了以下链接:

现在,我使用devise创建了一个用户模型,并使用上述指南创建了以下控制器(并确保将其包含在我的路由文件中)。我的额外参数是first_name和last_name。

代码语言:javascript
复制
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“,但这总是在我的服务器日志中给出”不允许的参数“错误。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-06 04:58:42

感谢Devise的Rails4分支的最新更新,它不需要插入'resource_params‘。

我已经创建了一个全新的Rails4应用程序,并遵循了基本的设计安装步骤,我的应用程序运行正常,所以我认为,你做得很好。

但是有一个修改过的gist,如果您需要的话,它会为您提供一些关于允许参数的额外细节:

来源:https://gist.github.com/bluemont/e304e65e7e15d77d3cb9

代码语言:javascript
复制
# 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
票数 66
EN

Stack Overflow用户

发布于 2016-06-06 17:57:29

针对Rails 5,Devise 4的

使用以下代码:

代码语言:javascript
复制
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

Reference

票数 29
EN

Stack Overflow用户

发布于 2015-04-01 17:57:19

在所有parameters都是这样的config/initializers中添加一个模块,效果非常好

代码语言:javascript
复制
module DevisePermittedParameters
  extend ActiveSupport::Concern

  included do
    before_filter :configure_permitted_parameters
  end

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:first_name, :last_name, :email, :password, :password_confirmation) }
  end

end

DeviseController.send :include, DevisePermittedParameters
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16379554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档