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