Rails миграция: лучший способ получить текущую версию миграции - PullRequest
69 голосов
/ 13 января 2012

Есть ли хороший способ получить номер версии миграции?

Мне нужно реализовать метод в модели, который ведет себя по-разному в конкретной версии миграции и за ее пределами.

Я обнаружил предположения о предположенииАдаптер извлекает версию из базы данных, но не может найти другие.


Справочная информация: я пытаюсь удалить два столбца из таблицы A, хочу переместить их в таблицу B и добавить сопоставление в таблицуB из таблицы A.

Во время этого изменения мне нужно получить доступ к этим двум столбцам.но после этого я хочу добавить метод прокси для этих столбцов для совместимости.

Ответы [ 3 ]

134 голосов
/ 15 июня 2012

Есть намного более хороший способ: rake db:migrate:status

up     20120530222941  Create shenanigans
up     20120613030015  *** NO FILE ***

Указывает, что я удалил свой последний файл миграции.

Или проще:

> rake db:version
Current version: 20120613030015
93 голосов
/ 13 января 2012
> 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,
   ...
0 голосов
/ 07 сентября 2018

Если вы не хотите делать это без загрузки приложения, вы можете создать такой скрипт:

#!/usr/bin/env ruby

root = File.expand_path("../..", __FILE__)
lines = `ls #{root}/db/migrate`
puts lines.split("\n").last.split(" ").last.split("_").first

Обратите внимание, что строка root состоит в том, что мой скрипт находится в bin dir

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...