2010-07-23 8 views
1

Alors je viens de commencer avec Rails et maintenant je regarde HABTM. Je lis le livre DHH et je vois qu'il a deux modèles à savoir l'article et l'utilisateur. Ils ont des relations HABTM. Je me demande cependant si je dois créer moi-même une migration séparée pour le modèle articles_users ou est-ce que Rails le fera pour moi?Associer des utilisateurs et des articles

Si oui, que se passe-t-il si je crée un nouvel utilisateur et l'associe à un article? Est-ce que Rails sait tout de suite ce qu'il faut entrer dans le tableau articles_users?

Ex:

u = User.new(:name => "John"); 
a = Article.new(:title =>"Rails"); 

#can Je le fais?

a.user << u 

rails #will créent automatiquement une entrée à l'intérieur articles_users table?

Je suis un peu confus sur où Rails s'arrêter en termes de fabrication de tables pour nous ou quoi que ce soit.

Répondre

3

Vous devrez créer manuellement la table avec une migration. Cependant, la plupart des développeurs de rails préfèrent maintenant Has Many Through au lieu de HABTM. Un autre avantage est que lorsque vous générez le "modèle de joint", les rails feront une migration pour vous!

+0

pouvez-vous me donner un exemple de la commande script/generate pour le modèle de jointure que vous venez de mentionner? – denniss

+1

try: script/générer un modèle articles_users article_id: integer user_id: integer – Brian

+0

Brian a raison. Un autre avantage de l'utilisation de HMT est que vous avez un modèle complet auquel vous pouvez ajouter des méthodes ou des attributs plus tard. –

Questions connexes