Quelqu'un peut-il expliquer les avantages et les inconvénients entre has_many: through et has_and_belongs_to_many?utilise has_and_belongs_to_many pour les modèles est une mauvaise idée?
1
A
Répondre
6
Il n'y a rien de mal à utiliser habtm en soi. La raison pour laquelle beaucoup de gens n'utilisent pas ce type d'association est qu'ils utilisent has_many: through à la place. Pourquoi? Parce que c'est plus polyvalent. Alors que HABTM "cache" la table intermédiaire, lorsque vous utilisez has_many: à travers l'intermédiaire, l'homme est une ressource par elle-même - ce qui est généralement une bonne chose (si rien n'est fait, vous pouvez horodater la relation). Vous rencontrerez de nombreuses situations où vous devrez ajouter un comportement ou des attributs à une telle relation (lors de la conception d'un système orienté vers les ressources).
Questions connexes
- 1. Est-ce une mauvaise idée?
- 2. Est-ce que * {position: relative} est une mauvaise idée?
- 3. Bonne idée/Mauvaise idée (/ autres idées?)
- 4. Utiliser les déclarations "friend" pour les tests unitaires. Mauvaise idée?
- 5. Le verrouillage de l'objet demandé est-il une mauvaise idée?
- 6. Est-ce une mauvaise idée d'exécuter WxWidgets et GTK?
- 7. Est-ce une mauvaise idée d'utiliser `<% =` dans un WebControl
- 8. Les requêtes en ligne sont-elles une mauvaise idée?
- 9. Les emplacements de connexion multiples sont-ils une mauvaise idée?
- 10. Mauvaise idée de renvoyer ex.InnerException?
- 11. Utilise Spring AOP pour enregistrer une bonne idée?
- 12. quiconque utilise une idée pour capturer captcha en sélénium
- 13. Est-ce une mauvaise idée de consigner automatiquement les utilisateurs à partir d'un e-mail?
- 14. Contrôleur comme usine ascx - mauvaise idée?
- 15. Comment incrémenter les noms de variables/Est-ce une mauvaise idée
- 16. Injection de référentiel dans MembershipProvider.Initialize()? Mauvaise idée?
- 17. Est-ce une mauvaise idée de laisser les utilisateurs ajouter leur propre feuille de style?
- 18. Est-il toujours une mauvaise idée d'utiliser + pour concaténer des chaînes
- 19. NHibernate dateTime comme ID Mauvaise idée?
- 20. Utilisation temporaire, using filesort une mauvaise idée dans mysql?
- 21. Bug dans Visual Studio, ou juste une mauvaise idée?
- 22. Est-ce que mélanger WPF, LinqToSql et plusieurs threads est une mauvaise idée?
- 23. Ant utilise mauvaise version java
- 24. Affichage d'un IFrame sur une applet? Mauvaise idée?
- 25. @ font-face et font-variant mauvaise idée?
- 26. Est-ce une mauvaise idée d'exécuter deux instances d'une application Cocoa en même temps?
- 27. Est-ce une mauvaise idée d'avoir une table de propriétés dans une base de données?
- 28. débogage d'un service Windows, ajout de la journalisation db pour attraper cluase une mauvaise idée?
- 29. Est-ce une mauvaise idée d'ajouter une période à un fichier de solution .Net?
- 30. Le regroupement de votre code de vérification dans une méthode Ruby est-il une mauvaise idée?
Je commence à voir la signification de ceci moi-même ... la flexibilité ajoutée est vraiment bénéfique à mesure que les spécifications changent. Curieux, cependant: si j'ai eu une relation habtm entre les utilisateurs et les repas, mais j'ai maintenant besoin de la table intermédiaire, comment j'appellerais la table intermédiaire? Est-ce une toute nouvelle ressource appelée meal_user ou quelque chose? – dmonopoly
Je me rends compte qu'il s'agit d'une question plus ancienne, mais habituellement vous l'appelleriez quelque chose à faire avec les autres attributs et le but de les stocker, car c'est maintenant une nouvelle ressource. Par exemple, s'il s'agit d'une note de repas sur 5, cela peut comprendre la ressource «évaluation». –