Rails迁移:检索当前迁移版本的最佳方法

shi*_*eya 70 ruby-on-rails ruby-on-rails-3

有没有很好的方法来检索迁移版本号?

我需要在模型中实现一个方法,该方法在特定迁移版本之外的行为方式不同.

我发现连接适配器中的assume_migrated_upto_version正在从数据库中检索版本但无法找到其他版本.


背景:我正在尝试从表A中删除两列,想要将它们移动到表B中,并从表A中添加与表B的关联.

在此更改期间,我需要访问这两列.但在那之后,我想为这些列添加代理方法以实现兼容性.

Pet*_*ich 135

有一个更好的方式: rake db:migrate:status

up     20120530222941  Create shenanigans
up     20120613030015  *** NO FILE ***
Run Code Online (Sandbox Code Playgroud)

表示我已删除最新的迁移文件.

或者更简单:

> rake db:version
Current version: 20120613030015
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.我知道,但我需要在迁移过程中以编程方式检索它. (5认同)

jib*_*iel 93

> ActiveRecord::Migrator.current_version
   (0.2ms)  SELECT "schema_migrations"."version" FROM "schema_migrations" 
=> 20120110085802

> ActiveRecord::Migrator.get_all_versions
   (0.3ms)  SELECT "schema_migrations"."version" FROM "schema_migrations" 
=> [20111114121610,
    20111115091108,
   ...
Run Code Online (Sandbox Code Playgroud)

  • **注意:`ActiveRecord::Migrator.get_all_versions` 确实_不_包括挂起的迁移。它_仅_包括已运行的迁移。** (2认同)
  • `ActiveRecord::Migrator.get_all_versions` 在 Rails 6 中不起作用。对于 Rails 6,请使用: `ApplicationRecord.connection.migration_context.current_version` `ApplicationRecord.connection.migration_context.get_all_versions`。 (2认同)