Ruby on rails 不支持Rails5直接从ActiveRecord::Migration继承。魔法宝石
我正在尝试迁移Rails 3应用程序。我使用RVM安装了Rails v 5.1.5。 在尝试db:migrate时,我得到以下结果 雷克流产了! StandardError:发生错误,所有后续迁移均已取消: 不支持直接从ActiveRecord::Migration继承。请指定编写迁移的Rails版本: 类SorceryCoreRuby on rails 不支持Rails5直接从ActiveRecord::Migration继承。魔法宝石,ruby-on-rails,sorcery,Ruby On Rails,Sorcery,我正在尝试迁移Rails 3应用程序。我使用RVM安装了Rails v 5.1.5。 在尝试db:migrate时,我得到以下结果 雷克流产了! StandardError:发生错误,所有后续迁移均已取消: 不支持直接从ActiveRecord::Migration继承。请指定编写迁移的Rails版本: 类SorceryCorefalse t、 字符串:加密的密码 t、 绳子:盐 t、 时间戳:null=>false 结束 添加索引:,:电子邮件,唯一:true 结束 结束 您必须像上面所说的那
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
class-SorceryCore<
def更换
创建表格:do | t|
t、 字符串:email,:null=>false
t、 字符串:加密的密码
t、 绳子:盐
t、 时间戳:null=>false
结束
添加索引:,:电子邮件,唯一:true
结束
结束
您必须像上面所说的那样在括号中指定版本。升级后是否添加了迁移
示例更改为:
class-SorceryCore
到
class-SorceryCore
通过从Rails根目录运行以下命令,可以将该版本添加到所有迁移:
grep -rl ActiveRecord::Migration$ db | xargs sed -i "" "s/ActiveRecord::Migration/ActiveRecord::Migration[5.1]/g"
就我而言,我使用的是过时版本的
数据\u migrate
:
bundle update data_migrate
# Using data_migrate 6.3.0 (was 5.3.2)
该类在SorceryCore中定义如下。类SorceryCore<那么,如何添加ActiveRecord::Migration[5.1]?我应该在目录结构的哪个位置运行你的grep命令?@ubiquitousDave-ah,我明白了。我认为这是你代码中的一个例子。您是否使用最新版本的
魔法宝石?看起来他们从Rails::VERSION::MAJOR
变量定义了migration\u class\u name
。是这方面的根源。我相信如果您使用的是最新版本的巫术-gem update sorcery
…假设您的Gemfile
未锁定到较旧版本,它会工作的。好的,我知道我需要处理单个迁移。成功了!好的,我知道我需要处理单个迁移。