Rails无法找到Doorkeeper::AccessToken关联模型的问题求助
解决Doorkeeper::AccessToken关联NameError错误
以下是针对该错误的具体修复方案:
确认Doorkeeper依赖与引擎加载
先检查Gemfile中是否已添加Doorkeeper并执行bundle install:gem 'doorkeeper'同时确保
config/application.rb中已加载Doorkeeper引擎:require "doorkeeper/rails/engine"修正关联的class_name引用
将字符串形式的class_name改为常量引用,避免Rails加载时找不到模型:has_many :access_tokens, class_name: Doorkeeper::AccessToken, foreign_key: :resource_owner_id, dependent: :delete_all若仍有问题,可在User模型顶部手动加载Doorkeeper的AccessToken模型:
require 'doorkeeper/models/access_token' class User < ApplicationRecord has_many :access_tokens, class_name: Doorkeeper::AccessToken, foreign_key: :resource_owner_id, dependent: :delete_all end完成Doorkeeper初始化与迁移
确保已运行Doorkeeper的安装命令和数据库迁移:rails generate doorkeeper:install rails db:migrate迁移完成后,Doorkeeper的
access_tokens表会被创建,模型关联才能正常生效。验证模型兼容性
在Rails控制台中检查Doorkeeper::AccessToken的继承关系,确认它是ActiveRecord::Base的子类:rails c > Doorkeeper::AccessToken.superclass若输出不是
ActiveRecord::Base,则说明Doorkeeper版本与Rails 7.0.3不兼容,建议升级Doorkeeper到适配版本(如>=5.5.0)。
内容的提问来源于stack exchange,提问作者Sakshi Jain
相关产品推荐
相关产品推荐

