【问题标题】:Saving other attributes to User model with Devise gem使用 Devise gem 将其他属性保存到用户模型
【发布时间】:2015-02-26 05:40:21
【问题描述】:

我通过 Devise gem 创建了一个用户模型,该模型在注册时允许使用电子邮件、名字和密码。

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

我想将姓氏、城市等其他属性保存到用户模型中。我已经运行了迁移并在我的架构中看到了这些属性。

但是,当我在用户/编辑页面上并尝试保存时,新属性没有保存。

我已经运行了编辑设计控制器的命令,但是很困惑。

rails generate devise:controllers users

我是否还需要创建一个 UsersController

然后我可以在尝试更新时允许所有内容

def user_params
  params.require(:user).permit!
end

谢谢

【问题讨论】:

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


    【解决方案1】:

    试试这个:

    class ApplicationController < ActionController::Base
      protect_from_forgery
      before_filter :configure_permitted_parameters, if: :devise_controller?
    
      protected
    
      def configure_permitted_parameters
        devise_parameter_sanitizer.for(:user) << :first_name
      end
    end
    

    【讨论】:

    • 我注意到 Heroku 生产中断了?你有同样的经历吗?
    【解决方案2】:

    将以下过滤器添加到应用程序控制器:

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

    这是为了注册。要更新用户信息,请在 configure_permitted_pa​​rameters 过滤器中添加以下代码行。

    devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:first_name, :email, :password, :password_confirmation, :current_password) }
    

    【讨论】:

    • 如果我再添加 20 个属性会怎样?我必须把它们都列出来吗?有没有更简单的方法?
    • 目前我只是在使用>> params.require(:user).permit!在用户控制器中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    相关资源
    最近更新 更多