我应该将什么传递给 ActiveRecord::MigrationContext#new 中的 schema_migration

Lyk*_*kos 8 ruby ruby-on-rails rails-activerecord

自最新的 Rails 版本以来,ActiveRecord::MigrationContext#new似乎采用了一个名为 的新参数schema_migration。但我不知道要经过什么以及从哪里得到它。

我找不到任何相关信息。我用谷歌搜索了一个小时,MigrationContext我发现的所有示例都引用了旧的 Rails 版本。MigrationContext 类似乎根本没有记录。从源代码中我也无法弄清楚要传递什么。

一些背景:我正在尝试测试一些更危险的迁移。我找到了很多教程,看起来很简单,我就跟着做了。但是准备测试数据库状态以便我可以应用迁移的代码当前不起作用。遗憾的是,所有教程都使用较旧的 Rails 版本,并且由于参数数量错误而失败:

ActiveRecord::MigrationContext.new(migrations_paths)
Run Code Online (Sandbox Code Playgroud)

Lyk*_*kos 7

我发现我需要通过什么:

ActiveRecord::Base.connection.schema_migration
Run Code Online (Sandbox Code Playgroud)

所以整个代码是:

  migrations_paths = ActiveRecord::Migrator.migrations_paths
  schema_migration = ActiveRecord::Base.connection.schema_migration
  migration_context = ActiveRecord::MigrationContext.new(migrations_paths, schema_migration)
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索并尝试了一个小时,但没有弄清楚,但就在发布问题后,我终于偶然发现了这个github问题https://github.com/pat/combustion/issues/98,它有同样的问题并且一个办法。


Jac*_*uen 5

您可能也只想使用ActiveRecord::Base.connection.migration_context而不是ActiveRecord::MigrationContext.new. 无需论证。