【问题标题】:how to migrate a specific migration from a rake file in rails6如何从 rails6 中的 rake 文件迁移特定迁移
【发布时间】:2021-03-14 09:52:19
【问题描述】:

在我的 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:Class 的未定义方法“运行”

从应用程序路径,如果我给出 : rake db:migrate:up VERSION=20130306070257 ,它将起作用。

请帮我纠正这个任务。谢谢。

【问题讨论】:

    标签: migration ruby-on-rails-6 ruby-on-rails-4.2


    【解决方案1】:

    在 Rails 6 中运行是实例方法。(https://www.rubydoc.info/gems/activerecord/ActiveRecord/Migrator) 所以你可以这样使用它:

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

    将“ClassName”替换为您的班级名称。例如,如果您的迁移从类 CreateUser

    【讨论】:

    • 我再次编辑了我的答案。抱歉,我在上班,所以无法查看答案。
    • 上述命令的一个问题是:迁移版本号不会进入schema_migrations表。
    猜你喜欢
    • 2018-01-10
    • 2013-12-05
    • 2021-08-09
    • 2022-09-29
    • 2021-02-28
    • 2013-06-28
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多