Le problème suit:
Le résultat est:
Je voulais en quelque sorte dire à rake d'ignorer les migrations en attente, mais je ne pouvais pas le faire jusqu'à présent.
MISE À JOUR (en raison d'une expérience supplémentaire)
Parfois, les migrations et le code du modèle sont désynchronisés, de sorte que les migrations ne sont pas exécutées. Pour éviter ce problème récemment utilisé la redéfinition du modèle dans les migrations:
# reset all callbacks, hooks, etc for this model
class MyAwesomeModel < ActiveRecord::Base
end
class DoSomethingCool < ActiveRecord::Migration
def change
...
end
end
Rails stocke les informations de migration dans une table appelée schema_migrations
.
Vous pouvez ajouter la version de votre migration dans cette table pour ignorer une migration spécifique.
La version est la chaîne numérique qui précède la description dans le nom de fichier.
[version]_Create_Awesome.rb
Je ne sais pas très bien si cela vous aidera. Mais je cherchais quelque chose et j'ai trouvé cette question. Il semble donc que cela pourrait aider:
Dans Rails_ROOT/config/environnements/development.rb Définissez le paramètre suivant sur false:
config.active_record.migration_error = false#:page_load
Dans ma situation, il ne montre plus l'erreur de migration en attente. Devrait également fonctionner pour les tâches de râteau et la console pour le même environnement.
Renommez la migration en fonction des données de:
20140730091353_migration_name.rb
à
.20140730091353_migration_name.rb
(ajoutez un point au début du nom de fichier)
Exécutez ensuite rake db:seed
(il ne se plaindra plus des migrations en attente), puis renommez la migration.
Si vous avez plus de migrations après, vous devez tous les renommer ou simplement les déplacer temporairement.
J'ai eu un problème similaire. J'ai commenté les lignes add_column et exécuté les commandes rake db: migrate, puis supprimé le commentaire lorsque j'en aurai besoin pour l'environnement de test ou de production.
Il n'y a aucun moyen à moins que vous ne corrigiez le code Rails. Je vous conseille fortement de corriger vos migrations à la place.
Une migration ne doit pas dépendre de l'existence de certaines données dans la base de données. Cela peut dépendre d'une migration précédente, mais bien sûr absolument pas des données de la base de données.