2011-03-15 5 views
0

j'ai un problème en essayant de comprendre lors de la construction d'une application de rails avec plusieurs modèles et les navires de relation entre eux ...rails relation modèle et la migration

Si je prends un exemple de base comme un groupe de modèle, un modèle utilisateur et un modèle de voiture

class Group < ActiveRecord::Base 
    has_many :users 
end 
class User < ActiveRecord::Base 
    belongs_to :group 
    has_many :cars 
end 
class Car < ActiveRecord::Base 
    belongs_to :user 
end 

Est-ce que ces déclarations de navires de relation crée automatiquement les fonctions suivantes:

  • group.users
  • utilisateur.groupe
  • user.cars
  • car.user

Il semble que nous devons parfois devoir créer des « références » dans la migration (comme l'ajout d'une référence vers l'utilisateur dans le tableau de voitures), mais Est-ce toujours nécessaire? Dans ce cas, quelle est la différence de création de la migration et d'ajout de l'instruction de relation dans les modèles? J'ai parfois le sentiment que cela est utilisé dans le même but.

Merci beaucoup pour votre aide,

Cordialement,

Luc

Répondre

2

Les déclarations d'association sont là pour Rails seulement. Vous devez définir les clés étrangères (références) dans la base de données, afin que Rails puisse correctement enregistrer les données. Rappelez-vous, malgré toute la magie, il est toujours soutenu par une base de données relationnelle, donc les bonnes pratiques seront payantes à long terme.

+0

hmmm ... donc vous voulez dire que la fonction (comme .users, .cars, ...) n'est pas créée lors de la définition des relations dans les modèles? – Luc

+0

Non, ils sont créés, mais ils ne fonctionneront pas tant que vous n'aurez pas appliqué les modifications à la base de données. –

Questions connexes