我在 ActiveRecord::MigrationContext#new 中将什么传递给 schema_migration
What do I pass to schema_migration in ActiveRecord::MigrationContext#new
自从最新的 Rails 版本以来,ActiveRecord::MigrationContext#new
似乎采用了一个名为 schema_migration
的新参数。但是我不知道要传递什么以及从哪里得到它。
我找不到关于它的任何信息。我在谷歌上搜索了一个小时,我发现 MigrationContext
的所有示例都提到了旧的 rails 版本。 class MigrationContext 似乎根本没有记录。从源代码我也不知道要传递什么。
一些背景:我正在尝试测试一些更危险的迁移。我找到了很多教程,看起来很简单,我就去做了。但是准备测试数据库状态以便我可以应用迁移的代码目前无法正常工作。遗憾的是,所有教程都使用了较旧的 Rails 版本,并且由于参数数量错误而失败:
ActiveRecord::MigrationContext.new(migrations_paths)
我找到了我需要通过的内容:
ActiveRecord::Base.connection.schema_migration
所以整个代码将是:
migrations_paths = ActiveRecord::Migrator.migrations_paths
schema_migration = ActiveRecord::Base.connection.schema_migration
migration_context = ActiveRecord::MigrationContext.new(migrations_paths, schema_migration)
我用谷歌搜索并尝试了一个小时,但没有弄明白,但在发布问题后,我终于偶然发现了这个 github 问题 https://github.com/pat/combustion/issues/98,它有同样的问题和解决方案。
您可能还只想使用 ActiveRecord::Base.connection.migration_context
而不是 ActiveRecord::MigrationContext.new
。无需参数。
自从最新的 Rails 版本以来,ActiveRecord::MigrationContext#new
似乎采用了一个名为 schema_migration
的新参数。但是我不知道要传递什么以及从哪里得到它。
我找不到关于它的任何信息。我在谷歌上搜索了一个小时,我发现 MigrationContext
的所有示例都提到了旧的 rails 版本。 class MigrationContext 似乎根本没有记录。从源代码我也不知道要传递什么。
一些背景:我正在尝试测试一些更危险的迁移。我找到了很多教程,看起来很简单,我就去做了。但是准备测试数据库状态以便我可以应用迁移的代码目前无法正常工作。遗憾的是,所有教程都使用了较旧的 Rails 版本,并且由于参数数量错误而失败:
ActiveRecord::MigrationContext.new(migrations_paths)
我找到了我需要通过的内容:
ActiveRecord::Base.connection.schema_migration
所以整个代码将是:
migrations_paths = ActiveRecord::Migrator.migrations_paths
schema_migration = ActiveRecord::Base.connection.schema_migration
migration_context = ActiveRecord::MigrationContext.new(migrations_paths, schema_migration)
我用谷歌搜索并尝试了一个小时,但没有弄明白,但在发布问题后,我终于偶然发现了这个 github 问题 https://github.com/pat/combustion/issues/98,它有同样的问题和解决方案。
您可能还只想使用 ActiveRecord::Base.connection.migration_context
而不是 ActiveRecord::MigrationContext.new
。无需参数。