Dans l'application que je construis, je veux avoir des événements. Les personnes peuvent alors s'inscrire à l'événement en créant une équipe, en s'inscrivant directement à un événement (pas d'équipe) ou en rejoignant une équipe existante. Au départ, je l'avais créé car l'Event a beaucoup d'équipes, l'équipe a beaucoup d'utilisateurs, l'utilisateur appartient à Team et Event. Cependant, je prévois des problèmes si un utilisateur enregistré veut rejoindre un autre événement (ou équipe pour un autre événement), et aussi en essayant de lister des choses comme @ user.events ou @ user.teams dans le panneau de contrôle. Quelqu'un a suggéré d'utiliser une table de jointure et de créer un modèle d'enregistrement/une migration pour les joindre. Puis-je avoir un modèle de jointure appartenant à un événement, une équipe et un utilisateur? Est-ce que je m'approche de tout cela?Rails joindre des tables ou des associations HABTM
1
A
Répondre
2
Vous pouvez créer un enregistrement de modèle de jointure et rendre le polymorphe belongs_to afin qu'il puisse faire référence à n'importe quel type d'objet. Voici un exemple:
modèles/team.rb:
class Team < ActiveRecord::Base
has_many :registrations, :as => :owner
end
modèles/user.rb
class User < ActiveRecord::Base
has_many :registrations, :as => :owner
end
modèles/registration.rb
class Registration < ActiveRecord::Base
belongs_to :owner, :polymorphic => true
end
modèles/event.rb
class Event < ActiveRecord::Base
has_many :registrations
end
db/migrations/1234_add_registrations.rb
...
t.belongs_to :owner, :polymorphic => true
t.belongs_to :event
...
Maintenant, vous pouvez regarder regard sur les inscriptions pour voir qui a signé pour votre événement. Vous pouvez utiliser has_many: events,: through =>: inscriptions,: source =>: owner pour revenir aux utilisateurs, mais notez qu'il existe certaines limitations, comme has_many: owners,: through =>: registrations, qui sont abordées dans des plugins comme has_many_polymorphs.
Questions connexes
- 1. Rails Associations, habtm? Polymorphe? Tous les deux?
- 2. Comment joindre des tables multiples?
- 3. Joindre des tables - MySQL & PHP
- 4. à l'aide searchlogic avec les associations HABTM
- 5. Joindre des tables avec Zend Framework PHP
- 6. rails: quel est le problème avec ce multiple se joindre à des conditions sur les associations?
- 7. joindre un à un avec des rails
- 8. Y compris l'optimisation des associations dans Rails
- 9. Ruby on Rails: Comment joindre deux tables
- 10. Comment joindre des tables polymorphes dans une requête?
- 11. Rails: comment modéliser des requêtes RESTful à travers des associations?
- 12. Rails associations
- 13. Rails Associations
- 14. rails migrations HABTM
- 15. Joindre des tables multiples conditions - comparer des dates - Linq
- 16. joindre des tables pour obtenir vendu des produits
- 17. Comment modifier des données supplémentaires dans les tables HABTM?
- 18. rails recherche des articles avec des associations similaires
- 19. Rails association HABTM à travers deux tables de jointure
- 20. Rails ActiveResource Les associations
- 21. Trouvez des parents avec ou sans enfants dans des associations polymorphiques dans les rails
- 22. Comment créer une vue pour gérer les associations entre les modèles HABTM? (Rails)
- 23. Rails - problème avec HABTM
- 24. Rails HABTM Question
- 25. SQL joindre 3 tables
- 26. joindre deux tables MySQL
- 27. Linq pour joindre des tables sur XElement.Name = XAttribute ("n")
- 28. rails HABTM rejoint et incommode
- 29. joindre deux tables
- 30. Comment joindre des tables avec une condition en utilisant LLBLGen?