En reliant un événement sportif à deux équipes, au début, cela semblait logique:Est-il correct d'avoir plusieurs ActiveRecord `belongs_to` pointant vers la même classe?
events
- id:integer
- integer:home_team_id
- integer:away_team_id
teams
- integer:id
- string:name
Cependant, je suis préoccupé par la façon dont je rattacherais que dans le modèle d'enregistrement actif:
class Event
belongs_to :home_team, :class_name => 'Team', :foreign_key => "home_team_id"
belongs_to :away_team, :class_name => 'Team', :foreign_key => "away_team_id"
end
Est-ce la meilleure solution?
Dans une réponse à un similar question j'ai été pointé vers l'héritage de table unique, puis plus tard trouvé des associations polymorphes. Aucun d'entre eux ne semblait correspondre à cette association. Peut-être que je regarde ce problème, mais je ne vois pas la nécessité de sous-classer une équipe dans les équipes à domicile et à l'extérieur puisque la distinction est seulement là où le jeu est joué. Si je devais aller avec l'héritage d'une table unique, je ne voudrais pas que chaque équipe appartienne à un événement, alors est-ce que cela fonctionnerait?
# app/models/event.rb
class Event < ActiveRecord::Base
belongs_to :home_team
belongs_to :away_team
end
# app/models/team.rb
class Team < ActiveRecord::Base
has_many :teams
end
# app/models/home_team.rb
class HomeTeam < Team
end
# app/models/away_team.rb
class AwayTeam < Team
end
Cela semblait être trop de travail pour ce que je voulais réaliser.
Je pensais aussi à un has_many à travers l'association, mais cela semble deux choses car je n'aurai besoin que de deux équipes, mais ces deux équipes n'appartiennent à aucun événement. Y a-t-il un moyen plus sémantique pour rendre ces associations actives? ou l'une de ces solutions est-elle le meilleur choix?
Merci
merci pour la confirmation! – ethyreal