422 votes

Ajout d'une colonne à une table dans des rails

J’ai un modèle aux utilisateurs qui doivent une colonne. J’ai oublié d’ajouter cette colonne au cours de l’échafaudage initial. J’ai ouvert le fichier de migration et ajouté , a et a obtenu un . Puis j’ai ajouté la ligne

nouveau , nouveau . Ai-je raté une étape ici ?

Edit : Voici le fichier de migration.

698voto

Dylan Markow Points 65796

Si vous avez déjà exécuté votre migration initiale (avant l'édition de cela), alors vous avez besoin de générer une nouvelle migration (rails generate migration add_email_to_users email:string fera l'affaire). Puis faire un rake db:migrate et ça va fonctionner la nouvelle migration.

Si vous n'avez pas encore exécuté l'origine de la migration, vous pouvez le modifier, comme vous essayez de le faire. Votre code de migration est presque parfait: vous avez juste besoin de supprimer l' add_column ligne complètement (ce code est d'essayer d'ajouter une colonne à une table, avant de la table a été crée, et la création de la table de code a déjà été mis à jour pour inclure un t.string :email tout de même).

191voto

vinodh Points 102

Utilisez cette commande dans la console rails``

et

``pour exécuter cette migration

29voto

Nishit Hirani Points 81

Vous pouvez également faire

``

Si vous n’avez pas ajouté toutes les données vers les tables. Puis modifiez le fichier de migration en ajoutant la colonne e-mail, puis appelez

``

Cela fonctionne si vous avez des rails 3.1 installées dans votre système.

Beaucoup plus simple façon de faire c’est changement donne le changement dans le fichier de migration puisqu’il s’agit. utilisation

``.

Ceci annulera la dernière migration et recommencez la migration.

3voto

Don Roby Points 24965

Quand j'ai fait cela, plutôt que de bricoler l'origine de la migration, je en créer un nouveau avec juste ajouter une colonne dans la section et une baisse de la colonne dans le bas de la section.

Vous pouvez modifier l'original et relancez-le, si vous migrez vers le bas entre les deux, mais dans ce cas je pense que c'est une migration qui ne fonctionnent pas correctement.

Comme actuellement en poste, vous êtes en train d'ajouter la colonne et la création de la table.

Si vous modifiez l'ordre il pourrait travailler. Ou, vous êtes à la modification d'une migration, il suffit de l'ajouter à la create table au lieu de faire un distinct ajouter une colonne.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X