4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails】devise, devise_token_authで、ユーザー作成ログインの初期設定

Posted at

#新規ユーザーモデルを作成する時

##deviseの設定

$ rails g devise:install
      create  config/initializers/devise.rb
      create  config/locales/devise.en.yml
routes.rb
Rails.application.routes.draw do

  devise_for :users, :controllers => {
    :registrations => 'users/registrations',
    :sessions => 'users/sessions'
  }

  devise_scope :user do
    get "sign_in", :to => "users/sessions#new"
    get "sign_out", :to => "users/sessions#destroy"
  end
end
devise_for :モデル名認証に必要なルーティングを自動で設定

##devise_token_authの設定

$ rails g devise_token_auth:install User auth
      create  config/initializers/devise_token_auth.rb
      insert  app/controllers/application_controller.rb
        gsub  config/routes.rb
      create  db/migrate/20200919181950_devise_token_auth_create_users.rb
      create  app/models/user.rb
$ rails db:migrate
User...モデル名
auth...認証ルーティングをマウントするパス
routes.rb
Rails.application.routes.draw do
  mount_devise_token_auth_for 'User', controllers: {
    registrations: 'users'
  }
end

##deviseコントローラ

$ rails g devise:controllers users
      create  app/controllers/users/confirmations_controller.rb
      create  app/controllers/users/passwords_controller.rb
      create  app/controllers/users/registrations_controller.rb
      create  app/controllers/users/sessions_controller.rb
      create  app/controllers/users/unlocks_controller.rb
      create  app/controllers/users/omniauth_callbacks_controller.rb

#すでにUserモデルある場合

マイグレーション内容をいじる

class DeviseTokenAuthCreateUsers < ActiveRecord::Migration[6.0]
  def change


    change_table(:users) do |t|
      ## Required
      t.string :provider, :null => false, :default => "email"
      t.string :uid, :null => false, :default => ""


      ## Database authenticatable
      t.string :encrypted_password, :null => false, :default => ""


      ## Recoverable
      t.string   :reset_password_token
      t.datetime :reset_password_sent_at
      t.boolean  :allow_password_change, :default => false


      ## Rememberable
      t.datetime :remember_created_at


      ## Trackable
      t.integer  :sign_in_count, default: 0, null: false
      t.datetime :current_sign_in_at
      t.datetime :last_sign_in_at
      t.string   :current_sign_in_ip
      t.string   :last_sign_in_ip


      ## Confirmable
      t.string   :confirmation_token
      t.datetime :confirmed_at
      t.datetime :confirmation_sent_at
      t.string   :unconfirmed_email # Only if using reconfirmable


      ## Lockable
      # t.integer  :failed_attempts, :default => 0, :null => false # Only if lock strategy is :failed_attempts
      # t.string   :unlock_token # Only if unlock strategy is :email or :both
      # t.datetime :locked_at


      ## User Info
      # t.string :name
      t.string :nickname
      t.string :image
      # t.string :email


      ## Tokens
      t.text :tokens


      # t.timestamps
    end


    add_index :users, :email,                unique: true
    add_index :users, [:uid, :provider],     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

####注意すべきことは、2つ

  1. change_table(:users)にすること。(元は、create_table
  2. 既存のカラムはコメントアウトすること
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?