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

TOP