Devise:使用带Devise的用户控制器创建“个人资料”

时间:2019-06-16 20:59:18

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

我正在使用Rails 6应用程序,其中我分离了用户模型和概要文件模型。这引起了一些问题,如这篇帖子Rails 6: Only one profile per user should be created所示 我正在使用Devise进行身份验证,并决定添加一个用户控制器。我希望能够将用户模型作为配置文件使用,并且Devise负责sign_up,sign_in和用户的创建。

我创建了showeditupdatedestroy的用户控制器,并将其用作“配置文件”。但是,我对以下。如何使Devise与从users_controller继承的ApplicationRecord一起工作,这2个冲突不会吗?

class DeviseCreateUsers < ActiveRecord::Migration[6.0]
  def change
    create_table :users do |t|
      ## Database authenticatable
      t.string :email,              null: false, default: ""
      t.string :encrypted_password, null: false, default: ""

      ## Recoverable
      t.string   :reset_password_token
      t.datetime :reset_password_sent_at

      ## Rememberable
      t.datetime :remember_created_at

      ## Profile information
      t.string :full_name
      t.string :city
      t.string :bio


      t.timestamps null: false
    end

    add_index :users, :email,                unique: true
    add_index :users, :reset_password_token, unique: true
    # add_index :users, :confirmation_token,   unique: true
    # add_index :users, :unlock_token,         unique: true
  end
end

我将其他字段添加到了DeviseCreateUsers迁移中。我应该创建一个单独的create_users_migration吗?我希望用户使用电子邮件和密码进行注册,而不必使用字段:full_name:city:bio来创建User实例。

routes.rb

Rails.application.routes.draw do
  devise_for :users, controllers: {
       sessions: 'users/sessions'
     }
  resources :users, only: [:show, :edit, :update, :destroy]

  resources :posts do
    resource :comments, only: %i[show new create edit update]
  end
end

当我遵循Devise文档时:https://github.com/plataformatec/devise#configuring-controllers 我对后续问题有些困惑。我运行命令

$ rails generate devise:controllers users

enter image description here

文档是否不清楚是应该将log_insign_up那些视图的视图添加到users文件夹还是仅将new.html.erb表单的视图添加到{{1} },这是唯一生成的模板。

1 个答案:

答案 0 :(得分:-1)

我无法回答您的整个问题,但是我可以告诉您,您无需填写所有字段即可创建用户实例。如果您有其他字段用于注册和修改表单,那将很好。