162 votes

Rails de 3 migrations : ajout colonne de référence ?

Si je crée une nouvelle migration de rails 3 avec (par exemple)

, tout fonctionne bien... mais si j’ajoute une colonne avec quelque chose dans le sens de :

le champ de référence n’est pas reconnu. En bref, la question est : Comment puis-je ajouter une colonne de référencement à une migration de rails de la ligne de commande ?

205voto

Paulo Fidalgo Points 5207

Si vous utilisez les Rails 4.x , vous pouvez maintenant générer les migrations avec références, comme ceci :

rails de génèrent des migrations AddUserRefToProducts utilisateur : références

comme vous pouvez le voir sur les guides rails

186voto

DanneManne Points 13408

Vous n’avez pas besoin d’ajouter des références lorsque vous pouvez utiliser un id entier pour votre classe référencée.

Je dirais que l’avantage d’utiliser des références au lieu d’un entier ordinaire est que le modèle va être prédéfini avec belongs_to et étant donné que le modèle est déjà créé et n’est pas affecté lorsque vous migrez quelque chose existant, le but est sorte de perdu.

Donc je ferais comme ça au lieu de cela :

Et ensuite ajouter manuellement belongs_to : utilisateur dans le modèle d’appareil de contrôle

102voto

Eugene Points 870

Veuillez noter que vous aurez probablement besoin un index sur cette colonne trop.

49voto

Martin Points 341

Avec les deux étapes précédentes indiquées ci-dessus, vous êtes toujours absent la contrainte de clé étrangère. Cela devrait fonctionner :

35voto

gl03 Points 240

Vous pouvez utiliser des références à une migration de changement. Il s’agit de code Rails 3.2.13 valide :

c.f. : http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_table

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