RoR DB Design - мне нужно использовать таблицу: through? - PullRequest
0 голосов
/ 19 июня 2010

Я разрабатываю базовое спортивное приложение в RoR, и я не знаю, правильный ли дизайн моей базы данных.Например, у меня есть:

class Game < ActiveRecord::Base
  has_one :home_team
  has_one :away_team
end

class Team < ActiveRecord::Base
  has_many :games
end

Однако кто-то сказал мне, что лучший способ сделать это:

class Game < ActiveRecord::Base
  has_many :teams, :through => :game_teams, :limit => 2
end

class Team < ActiveRecord::Base
  has_many :games, :through => :game_teams
end

class Game_Teams < ActiveRecord::Base
  belongs_to :game
  belongs_to :team
end

Есть ли причина, по которой я хотел бы или не хотел бы либо дизайн

1 Ответ

1 голос
/ 19 июня 2010

Я не думаю, что ваш первый подход будет работать как есть. Если ваша таблица games имеет два поля home_team_id и away_team_id, то ваши has_one ассоциации должны быть примерно такими же, как has_one :home_team, :class => 'Team'

Кроме того, Team has_many :games будет предполагать, что таблица game имеет поле team_id, поэтому вам нужно будет добавить :conditions или, возможно, :finder_sql, чтобы Team выглядел как home_team_id, так и away_team_id чтобы найти свои игры. Это иллюстрирует обратную сторону вашего первого подхода, по сути, когда вы хотите знать все игры для команды, у вас есть 2 поля для просмотра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...