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

运行rake db:migrate出现uninitialized constant Rails::Plugin::Authorization错误如何解决

问题原因

这个错误是Rails 2.3.x版本的插件加载顺序问题导致的:acts_as_multi_school 插件在加载时,提供Authorization常量的declarative_authorization插件还未完成加载,因此找不到对应常量。

解决方案
  • 方案1:调整全局插件加载顺序
    打开项目config/environment.rb文件,在Rails::Initializer.run配置块中添加以下内容,指定优先加载授权插件:
config.plugins = [:declarative_authorization, :all]

该配置会强制先加载权限相关插件,再加载其余所有插件,避免依赖缺失。

  • 方案2:修改插件初始化逻辑
    打开报错的vendor/plugins/acts_as_multi_school/init.rb文件,将你定位到的那行代码包裹在after_initialize回调中,等所有插件加载完成后再执行逻辑:
Rails.configuration.after_initialize do
  Authorization::AUTH_DSL_FILES << "#{RAILS_ROOT}/vendor/plugins/acts_as_multi_school/config/acts_as_multi_school_auth.rb"
end

该方案不需要修改全局配置,仅针对单个插件的加载时机做调整。

  • 方案3:检查依赖插件是否存在
    先确认项目vendor/plugins目录下是否存在declarative_authorization插件,如果缺失需要先将对应兼容Rails 2.3.5、Ruby 1.8.7的版本放到该目录下,再执行迁移命令。

内容的提问来源于stack exchange,提问作者hanan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:54:06