web-dev-qa-db-fra.com

Migration Rails: le meilleur moyen de récupérer la version de migration actuelle

Existe-t-il un bon moyen de récupérer le numéro de version de la migration?

J'ai besoin d'implémenter une méthode dans un modèle qui se comporte différemment d'une version de migration spécifique à l'autre.

J'ai trouvé assum_migrated_upto_version dans l'adaptateur de connexion en train de récupérer la version de la base de données, mais je ne trouve pas d'autres.


Arrière-plan: J'essaie de supprimer deux colonnes de la table A, je souhaite les déplacer dans la table B et ajouter une association à la table B à partir de la table A.

Au cours de ce changement, je dois accéder à ces deux colonnes. mais après cela, je veux ajouter une méthode proxy pour la compatibilité de ces colonnes.

64
shigeya
> 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,
   ...
91
jibiel

Il existe un moyen beaucoup plus agréable: rake db:migrate:status

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

Indiquant que j'ai supprimé mon dernier fichier de migration.

Ou plus simplement: 

> rake db:version
Current version: 20120613030015
129
Peter Ehrlich

Si vous ne voulez pas faire cela sans charger votre application, vous pouvez créer un script comme celui-ci:

#!/usr/bin/env Ruby

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

Notez que la ligne root est parce que mon script est dans un répertoire bin

0
Tony