事象
devise + devise_token_authを利用してUserモデルを作成しました。(数ヶ月前)
直近でUserモデルを触ろうとしたところ、継承元がApplicationRecordではなくなぜかActiveRecord::Baseになっていました。
手動で継承元をApplicationRecordに変更してfindなどを実行してみるとエラーが出て、
クエリのテーブル名の指定がおかしかったので、コンソールでUser.table_nameを確認するとテーブル名が「userusers」になっていました。
内部スタッフ用にStaffというロールのテーブルも別名モデルであるのですが、そちらでも同じ事象が発生していました。
継承元をActiveRecord::Baseに修正すると問題無くなります。
他のモデルに関しては問題ありません。
補足
- githubのblameで確認したところ、Userモデル作成時から継承元がActiveRecord::Baseになっておりました。記憶にないですがdevise gnerateコマンドで作成したはずです。
- config系のファイルは特におかしなところはなさそうです。
コード
Ruby
1class User < ApplicationRecord 2 # Include default devise modules. Others available are:, :confirmable, 3 # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable 4 devise :database_authenticatable, :registerable, :recoverable, 5 :rememberable, :validatable, :trackable 6 include DeviseTokenAuth::Concerns::User 7end
ruby
1# Gemfile.lockからdevise関連のとこのみ抜粋 2 devise (4.7.3) 3 bcrypt (~> 3.0) 4 orm_adapter (~> 0.1) 5 railties (>= 4.1.0) 6 responders 7 warden (~> 1.2.3) 8 devise_token_auth (1.1.5) 9 bcrypt (~> 3.0) 10 devise (> 3.5.2, < 5) 11 rails (>= 4.2.0, < 6.2)
ApplicationRecord も質問文に追加お願いします。
回答1件
あなたの回答
tips
プレビュー