You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 12:50:08