为什么我的rails db:migrate无法正常工作?

时间:2017-06-07 13:41:11

标签: ruby-on-rails ruby-on-rails-5.1

我输入rails db:migrate并收到以下错误。我用谷歌搜索,有人说像将迁移版本从[4.2]更改为[5.1],但它仍然没有用。

  

rails db:migrate   铁轨中止了!   StandardError:发生错误,此以及所有后续迁移都已取消:

     

不支持直接继承ActiveRecord :: Migration。请指定为以下内容编写的Rails版本:

     

class CreateCkeditorAssets< ActiveRecord的::迁移[4.2]

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