向Devise模型添加新字段。 Rails 5

时间:2017-06-16 13:08:10

标签: ruby-on-rails devise

所以我想为我的Devise模型用户添加一些新字段。当我使用Rails 3时,我只是添加了新的字段来建模并将这些字段添加到Model.rb

attr_accessible :name, :etc  

然后我更改了注册视图。 现在我也做了同样的事情,但我没有设计/用户控制器所以我不能做这样的事情

 def user_params
      params.require(:users).permit(:name)
 end 

或者

attr_accessible :name, :etc 

3 个答案:

答案 0 :(得分:13)

自定义RegistrationsController

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)

这有三个部分:

  1. 生成到表的迁移,以将字段添加到数据库架构中。
  2. rails generate migration add_name_to_users name:string

    1. 您需要添加在用户注册/编辑表单中添加/编辑名称的功能。 (看起来你已经在第一个代码示例中完成了)

    2. 您需要添加添加到控制器中的强力参数(您已在第二个代码示例中使用过。

    3. 基本上您似乎没有生成迁移。您收到任何错误消息吗?

答案 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