54 votes

Rails appartient_à de nombreux modèles

J'ai trouvé des questions sur les associations de Rails qui ressemblaient un peu à ma question, mais je n'arrive pas à comprendre comment utiliser belongs_to de modèles multiples.

Voici la structure de la table que j'ai l'intention d'avoir:

 User
 id

Post
 id
 user_id #foreign key; a post belongs to a User aka "Who created this post"

Comment
 id
 user_id #foreign key; a comment belongs to a User aka "Who made this comment"
 post_id #foreign key; a comment belongs to a Post aka "What post this comment is for"
 

Et les associations :

 User
 has_many :posts
 has_many :comments

Post
 belongs_to :user
 has_many :comments

Comment
 belongs_to :user
 belongs_to :post
 

Est-ce la bonne approche?

58voto

Maxem Points 1770

Oui, c'est la bonne approche.

10voto

Tout n'est pas toujours la "meilleure" approche, les rails propose ce qu'on appelle un polymorphe belongs_to association. Il vous empêche de définir une clé étrangère dans la base de données car le xxx_id colonne fait référence à un id dans l'une des nombreuses tables tandis qu'une autre colonne désigne le nom de la table à modèle, mais il rend la relation plus explicite dans les rails. Aussi, il restreint le modèle à appartenir à l'un des autres modèles, par opposition à l'appartenance à l'un ou plusieurs, comme cela se produirait à l'aide de l'installation de plusieurs clés étrangères sans une certaine supplémentaire de db de la magie.

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