Migration 如何从rails6中的rake文件迁移特定迁移

Migration 如何从rails6中的rake文件迁移特定迁移,migration,ruby-on-rails-6,ruby-on-rails-4.2,Migration,Ruby On Rails 6,Ruby On Rails 4.2,在我的rails 4.2应用程序中,我使用一个任务执行向上迁移,如下所示: ActiveRecord::Migrator.run(:up, ActiveRecord::Migrator.migrations_path, 20130306070257) 但是,在我将应用程序升级到rails 6之后,这就不起作用了。显示的错误是: NoMethodError: undefined method `migrations_path' for ActiveRecord::Migrator:Class D

在我的rails 4.2应用程序中,我使用一个任务执行向上迁移,如下所示:

ActiveRecord::Migrator.run(:up, ActiveRecord::Migrator.migrations_path, 20130306070257)
但是,在我将应用程序升级到rails 6之后,这就不起作用了。显示的错误是:

NoMethodError: undefined method `migrations_path' for ActiveRecord::Migrator:Class
Did you mean?  migrations_paths
           migrations_paths=
然后,我尝试了以下功能:

ActiveRecord::Migrator.run(:up,20130306070257).
然后,我得到了以下错误:

ActiveRecord::Migrator.run(:up, NoMethodError:ActiveRecord::Migrator:类的未定义方法“run”

在应用程序路径中,如果我给出:rake db:migrate:up VERSION=20130306070257,它就会工作


请帮助我更正此任务。谢谢。

在rails 6中,运行是实例方法。() 所以你可以这样使用它:

ActiveRecord::Migrator.new(:up, [ActiveRecord::MigrationProxy.new('CreateTenants', nil, 'db/migrate/20130306070257_create_tenants.rb', '')], ActiveRecord::SchemaMigration, nil).run

将“ClassName”替换为您的类名。例如,如果您的迁移从类CreateUser开始我编辑了我的答案:)我再次编辑了我的答案。很抱歉,我正在工作,因此无法检查我的答案。上述命令的一个问题是:迁移版本号将不会输入schema_migrations表。db/schema.rb文件也不会更新