Pergunta

Ao vincular um evento esportivo a duas equipes, a princípio isso pareceu fazer sentido:

events
  - id:integer
  - integer:home_team_id
  - integer:away_team_id

teams
  - integer:id
  - string:name

No entanto, estou preocupado em saber como vincularia isso ao modelo de registro ativo:

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

Essa é a melhor solução?

Em uma resposta a um pergunta semelhante Fui apontado para herança de tabela única e, mais tarde, encontrei associações polimórficas.Nenhum dos quais parecia se encaixar nesta associação.Talvez eu esteja vendo isso errado, mas não vejo necessidade de subclassificar um time em times da casa e visitantes, já que a distinção está apenas no local onde o jogo é disputado.Se eu optasse pela herança de tabela única, não gostaria que cada equipe pertencesse a um evento, então isso funcionaria?

# 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

Isso parecia muito trabalhoso para o que eu queria alcançar.

Pensei também em has_many por meio de associação, mas parecem dois, pois só precisarei de duas equipes, mas essas duas equipes não pertencem a nenhum evento.

event_teams
  - integer:event_id
  - integer:team_id
  - boolean:is_home

Existe uma maneira mais limpa e semântica de fazer essas associações no registro ativo?ou uma dessas soluções é a melhor escolha?

Obrigado

Foi útil?

Solução

Sua solução é boa, pois o mesmo evento pertence a duas equipes.As associações polimórficas são aplicáveis ​​quando vários modelos são eventáveis.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top