1. ホーム
  2. ruby-on-rails

[解決済み] Railsマイグレーション:現在のマイグレーションバージョンを取得する最良の方法

2023-04-03 18:25:08

質問

マイグレーションのバージョン番号を取得する良い方法はありますか?

あるモデルで、特定のマイグレーションバージョン以降に異なる動作をするメソッドを実装する必要があります。

接続アダプタのassume_migrated_upto_versionはデータベースからバージョンを取得していることがわかりましたが、他がわかりません。


背景 テーブルAから2つの列を削除し、テーブルBに移動し、テーブルAからテーブルBに関連付けを追加しようとしています。

この変更の間、私はこれらの2つの列にアクセスする必要があります。しかし、その後、私は互換性のためにこれらの列のためのプロキシメソッドを追加したいと思います。

どのように解決するのですか?

Rails 5.2 以上であれば

> ApplicationRecord.connection.migration_context.current_version
   (0.3ms)  SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
=> 20200510093804

> ApplicationRecord.connection.migration_context.get_all_versions
   (0.3ms)  SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
=> [20191005164928,
    20191006111502,
   ...



までのRails 5.1.7 :

> 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,
   ...