迁移Rails 3应用至Rails 5.1.5时Sorcery Gem迁移报错求助
解决Rails 5.1.5迁移报错:Directly inheriting from ActiveRecord::Migration is not supported
嘿,这个问题我熟!从Rails 5开始,框架对迁移类的继承规则做了硬性调整——不能再直接继承ActiveRecord::Migration,必须明确指定该迁移编写时对应的Rails版本,这样Rails才能正确兼容旧迁移的语法和行为。针对你的SorceryCore迁移,咱们一步步搞定它:
步骤1:找到目标迁移文件
定位到db/migrate目录下定义SorceryCore的文件,文件名一般是类似[时间戳]_sorcery_core.rb的格式。
步骤2:修改迁移类的继承方式
找到原来的类定义:
class SorceryCore < ActiveRecord::Migration
你的迁移代码逻辑end
把它改成指定版本的形式,这里推荐用[4.2](因为Sorcery的核心迁移通常适配Rails 4.x系列):
class SorceryCore < ActiveRecord::Migration[4.2] # 你的迁移代码逻辑 end
额外注意点
- 如果你还有其他从Rails 3迁移过来的旧迁移文件,也需要统一修改继承方式:比如Rails 3的迁移可以指定
Migration[3.2],确保所有迁移都符合Rails 5的要求 - Rails 5开始推荐使用
rails db:migrate命令代替rake db:migrate,不过两种命令目前都能正常执行
内容的提问来源于stack exchange,提问作者uberdave
相关产品推荐
相关产品推荐

