Railsのdevise-jwtで「PG::NotNullViolation: ERROR: null value in column "jti" of relation "users" violates not-null constraint」"のエラーが出た時の対応方法
created
updated
目次
エラーが発生したタイミング
利用ライブラリ
devise-jwtは、ユーザ認証のdeviseにJWTトークンを利用するdevise拡張ライブラリです。JWTはAmazon CognitoやGoogle Cloud Identity Platformでも利用されている技術です。
インストール後にセットアップ
waiting-for-dev/devise-jwt: JWT token authentication with devise and rails
rails db:seedの実行時
User.create!({
email: "test@aventureworld.com",
})
# > PG::NotNullViolation: ERROR: null value in column "jti" of relation "users" violates not-null constraint
# > DETAIL: Failing row contains ().
devise-jwtのセットアップ前には発生しないエラー内容でした。usersテーブルにカラムを追加しています。
add_column :users, :jti, :string, null: false
解決方法
JTIMatcherを該当のモデルにincludeする
class User < ApplicationRecord
# これを追加
include Devise::JWT::RevocationStrategies::JTIMatcher
JTIMatcher
をincludeするのを忘れていただけなので、追加するとエラーが解消されます。
waiting-for-dev/devise-jwt: JWT token authentication with devise and rails