Je cherche à créer une application Rails avec trois modèles. Un modèle représente les voitures, un autre représente les couleurs des voitures peuvent être peintes, et un troisième représente une commande pour une voiture dans une certaine couleur. Quelle est la meilleure façon de structurer la relation entre ces modèles?Meilleure façon de modéliser ces relations dans Rails
Répondre
Ceci est assez basique. Je vous suggère de lire attentivement les Rails guide sur les associations Active Record. Pour démarrer:
class Car < ActiveRecord::Base
has_many :orders
belongs_to :color
end
class Color < ActiveRecord::Base
has_many :cars
has_many :orders
end
class Order < ActiveRecord::Base
belongs_to :car
belongs_to :color
end
J'ai pensé à cela un peu différemment de Janteh. Lorsque vous passez une commande, vous commandez une voiture particulière dans une couleur particulière, non? Je pense donc que les voitures et les couleurs devraient être associés par l'ordre, quelque chose comme ceci:
class Car < ActiveRecord::Base
has_many :orders
end
class Color < ActiveRecord::Base
has_many :orders
end
class Order < ActiveRecord::Base
belongs_to :car
belongs_to :color
end
Ceci est la plupart du temps ce Janteh suggéré, mais je n'associait une voiture directement avec une couleur particulière.
Mais vous voulez également savoir dans quelles couleurs vous pouvez commander une certaine voiture, non? – Janteh
Je préférerais une relation has_many: through. De cette façon, vous pouvez accéder à toutes les couleurs d'une voiture particulière, et toutes les voitures commandées dans une certaine couleur.
class Car < ActiveRecord::Base
has_many :orders
has_many :colors, :through => :orders
end
class Color < ActiveRecord::Base
has_many :orders
has_many :cars, :through => :orders
end
class Order < ActiveRecord::Base
belongs_to :car
belongs_to :color
end
- 1. Meilleure façon de modéliser ces relations Rails
- 2. Comment modéliser ces relations?
- 3. Meilleure façon de modéliser l'amitié d'un utilisateur avec différentes entités?
- 4. Meilleure façon de modéliser des valeurs de carte dans Grails?
- 5. Quelle est la meilleure façon de modéliser les relations hiérarchiques définies par l'utilisateur dans une base de données?
- 6. Meilleure façon de modéliser la logique d'installation/flux
- 7. La meilleure façon de stocker ces données dans SQL Table
- 8. Comment modéliser des sous-ensembles de relations inter-objets
- 9. Meilleure façon de gérer la table de relations Nhibernate
- 10. Relations profondes dans les rails
- 11. Comment modéliser ces classes/tables de base de données?
- 12. Quelle est la meilleure façon de récupérer ces données?
- 13. Meilleure façon de gérer RoutingError dans Rails 2.1.x?
- 14. Rails: relations mimiques dans activeecord
- 15. Meilleure façon de créer une fonctionnalité de prévisualisation dans Rails
- 16. Quelle est la meilleure façon de modéliser une hiérarchie irrégulière dans SSAS pour ROLAP et MOLAP?
- 17. Meilleure façon de gérer le multitenancy dans Rails 3
- 18. Base de données: meilleure façon de modéliser une feuille de calcul
- 19. Rails: Modèle de conception pour stocker l'ordre des relations
- 20. Meilleure façon d'implémenter le tri/la recherche simple dans Rails
- 21. La meilleure façon d'ajouter "décocher les radiobuttons" - fonctionnalité dans Rails?
- 22. Quel est le meilleur moyen de modéliser les relations parent-enfant stockées dans une table de jointure dans LinqToSql?
- 23. Meilleure façon de gérer les données relationnelles dans CodeIgniter?
- 24. Meilleure façon de collecter des statistiques d'utilisation de l'application Rails
- 25. Rails Héritage avec problème de relations
- 26. a beaucoup de relations dans des rails
- 27. Comment modéliser une façon unique à une relation dans Django
- 28. Comment dois-je modéliser ces transactions financières simples?
- 29. Comment puis-je utiliser LINQ pour résumer ces données - nombre de relations groupées par le nombre de ces relations
- 30. Quelle est la meilleure façon de déshumidifier ces classes, la duplication dans tout sauf constructeur
Pas un mauvais départ, peut vouloir ajouter une validation à l'ordre pour s'assurer que la couleur d'une commande est compatible avec la voiture sélectionnée. – EmFi