使用Devise gem将其他属性保存到User模型

时间:2014-12-30 02:43:37

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

我通过Devise gem创建了一个User模型,该模型允许在注册时使用email,first_name和password。

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

我想将其他属性(例如last_name,city等)保存到User模型中。我已经运行了迁移并在我的架构中看到了这些属性。

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

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

rails generate devise:controllers users

我还需要创建一个UsersController&lt; ApplicationController是为了在编辑/更新期间将其他属性接受到用户模型中?

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

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

由于

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

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

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) }