Rails5 不支持直接继承 ActiveRecord::Migration。魔法宝石

问题描述 投票:0回答:4

我正在尝试迁移 Rails 3 应用程序。我使用 RVM 安装了 Rails v 5.1.5。 当尝试 db:migrate 时,我得到以下信息。

耙子中止! StandardError:发生错误,所有后续迁移均已取消:

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

魔法核心类< ActiveRecord::Migration[4.2]

这是 Sorcerycore 的类定义:

class SorceryCore < <%= migration_class_name %>        


  def change
    create_table :<%= model_class_name.tableize %> do |t|
      t.string :email,            :null => false
      t.string :crypted_password
      t.string :salt

      t.timestamps                :null => false
    end

    add_index :<%= model_class_name.tableize %>, :email, unique: true
  end
end
ruby-on-rails sorcery
4个回答
69
投票

您必须像它所说的那样在括号中指定版本。 升级后您是否添加了任何迁移?

更改示例:

class SorceryCore < ActiveRecord::Migration

class SorceryCore < ActiveRecord::Migration[5.1]

您可以通过从 Rails 根目录运行以下命令来将版本添加到所有迁移中:

grep -rl ActiveRecord::Migration$ db | xargs sed -i "" "s/ActiveRecord::Migration/ActiveRecord::Migration[5.1]/g"

2
投票

就我而言,我正在使用过时的版本

data_migrate

bundle update data_migrate
# Using data_migrate 6.3.0 (was 5.3.2)

2
投票

最后添加您的迁移版本喜欢

class SorceryCore < ActiveRecord::Migration[5.1]

所以这里

[5.1]
是您的版本,所以添加版本

如果您不知道版本,请检查您之前的迁移,您可以在那里找到...


0
投票

如果有人运行上面的

grep
命令并收到错误提示
sed: can't read s/ActiveRecord::Migration/ActiveRecord::Migration[5.1]/g: No such file or directory
,我最终不得不像这样调整它:

grep -rl ActiveRecord::Migration db | xargs sed -i "s/ActiveRecord::Migration/ActiveRecord::Migration[5.1]/g"
© www.soinside.com 2019 - 2024. All rights reserved.