環境
- Rails 5.2.3
- Ruby 2.6.3
- devise_token_auth 1.1.1
概要
- 公式のgemからインストール。
-
gem 'devise_token_auth'
→bundle install
にて。 - 別途deviseは入れていない。
最新の(書いている時点で)gemをデフォルトの状態で動かすため、下記、公式説明の通りに、コンティグレーションを実行した。
その際に、なぜかエラーがでてしまった部分の解決を記載する。
User modelの修正
下記エラーが出る。
NoMethodError: undefined method `devise' for User
下記のように、extend Devise::Models
を追加する。
参考) https://github.com/lynndylanhurley/devise_token_auth/issues/1276#issuecomment-478866479
app/models/user.rb
class User < ActiveRecord::Base
extend Devise::Models
# 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
migrationファイルの修正
下記エラーが出る。
NoMethodError (undefined method `current_sign_in_at'
migrationファイルのUserに、下記のように、trackable
の追加の必要がある。
※または、上記User modelの:trackable
削除。
2019mmddhhmmss_devise_token_auth_create_users.rb
## Tokens
t.text :tokens
## 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
t.timestamps
end