Rails devise_token_auth 初期設定のマイグレーションができない
RailsをAPIモードでdevise_token_auth
をインストール
rails g devise_token_auth:install User auth
を実行後、マイグレーションファイルのConfirmable周りをコメントアウトをしてrails db:migrate
したのですが、以下のエラーが発生してしまいます。
rake aborted!
NoMethodError: undefined method `devise' for User (call 'User.connection' to establish a connection):Class
/Users/macbookpro/Documents/Web/プロジェクト名/server/app/models/user.rb:6:in `<class:User>'
/Users/macbookpro/Documents/Web/プロジェクト名/server/app/models/user.rb:3:in `<main>'
/Users/macbookpro/Documents/Web/プロジェクト名/server/config/routes.rb:2:in `block in <main>'
/Users/macbookpro/Documents/Web/プロジェクト名/server/config/routes.rb:1:in `<main>'
/Users/macbookpro/Documents/Web/プロジェクト名/server/config/environment.rb:5:in `<main>'
/Users/macbookpro/.rbenv/versions/2.5.1/bin/bundle:23:in `load'
/Users/macbookpro/.rbenv/versions/2.5.1/bin/bundle:23:in `<main>'
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with --trace)
検索するとdeviseのインストールを行なっていないことが原因のようですが、devise_token_auth
の場合も行うする必要があるのでしょうか?
Qiitaなどの記事を参照しましたが、devise_token_auth
の場合は、deviseのインストールする記述はありませんでした。
解決策をご教授いただければ幸いです。
ソースコード
userモデル
# frozen_string_literal: true
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
include DeviseTokenAuth::Concerns::User
end
ルーティング
Rails.application.routes.draw do
mount_devise_token_auth_for 'User', at: 'auth'
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end
マイグレーションファイル
devise_token_auth_create_users.rb
class DeviseTokenAuthCreateUsers < ActiveRecord::Migration[5.2]
def change
create_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
## 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