29

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

rails db:迁移 rails 中止!StandardError:发生错误,此迁移和所有后续迁移已取消:

不支持直接从 ActiveRecord::Migration 继承。请指定迁移所针对的 Rails 版本:

类 CreateCkeditorAssets < ActiveRecord::Migration[4.2]

4

2 回答 2

56

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 的导轨替换

于 2017-10-25T11:02:51.657 回答
39

Rails 5 改变了创建迁移的方式。您必须像这样从 Rails 5 开始指定 Rails 版本(假设您使用的是 Rails 5.1):

class CreateCkeditorAssets < ActiveRecord::Migration[5.1]

或者,您可以尝试创建一个测试迁移并查看您的 Rails 版本如何生成迁移,然后从那里获取它:

rails g model Test name:string
于 2017-06-07T13:51:27.273 回答