我输入rails db:migrate
并收到以下错误。我用谷歌搜索,有人说像将迁移版本从[4.2]更改为[5.1],但它仍然没有用。
rails db:migrate 铁轨中止了! StandardError:发生错误,此以及所有后续迁移都已取消:
不支持直接继承ActiveRecord :: Migration。请指定为以下内容编写的Rails版本:
class CreateCkeditorAssets< ActiveRecord的::迁移[4.2]
答案 0 :(得分:35)
Aditya已经写了答案,手动更改所有迁移是一项忙乱的任务,所以我写了一个单行程脚本来做那个
在linux(Gnu sed)
grep -rl "ActiveRecord::Migration$" db | xargs sed -i 's/ActiveRecord::Migration/ActiveRecord::Migration[4.2]/g'
在Mac(BSD sed)
grep -rl "ActiveRecord::Migration$" db | xargs sed -i "" "s/ActiveRecord::Migration/ActiveRecord::Migration[4.2]/g"
注意,您可以将4.2
替换为要升级到5.1的导轨
答案 1 :(得分:33)
Rails 5改变了创建迁移的方式。你必须像这样指定Rails发布Rails 5(假设你正在使用Rails 5.1):
class CreateCkeditorAssets < ActiveRecord::Migration[5.1]
或者,您可以尝试创建测试迁移,并查看您的Rails版本如何生成迁移,然后从那里获取:
rails g model Test name:string