我通过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
由于
答案 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_parameters过滤器中添加以下代码行。
devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:first_name, :email, :password, :password_confirmation, :current_password) }