所以我想为我的Devise模型用户添加一些新字段。当我使用Rails 3时,我只是添加了新的字段来建模并将这些字段添加到Model.rb
attr_accessible :name, :etc
然后我更改了注册视图。 现在我也做了同样的事情,但我没有设计/用户控制器所以我不能做这样的事情
def user_params
params.require(:users).permit(:name)
end
或者
attr_accessible :name, :etc
答案 0 :(得分:13)
class RegistrationsController < Devise::RegistrationsController
private
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
end
现在我们需要告诉Devise使用我们的注册控制器 - 我们可以在config / routes.rb文件中执行此操作。
devise_for :users, :controllers => { registrations: 'registrations' }
答案 1 :(得分:0)
这有三个部分:
rails generate migration add_name_to_users name:string
您需要添加在用户注册/编辑表单中添加/编辑名称的功能。 (看起来你已经在第一个代码示例中完成了)
您需要添加添加到控制器中的强力参数(您已在第二个代码示例中使用过。
基本上您似乎没有生成迁移。您收到任何错误消息吗?
答案 2 :(得分:0)
从Devise 4开始,Parameter Sanitaizer API已更改:
class ApplicationController < ActionController::Base
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:username])
end
end