У меня есть две таблицы, Teams
и Games
. Я пытаюсь настроить ассоциации для этих таблиц, но сталкиваясь с некоторыми проблемами. Вот моя Game
модель с его ассоциациями:has_many связь с несколькими внешними ключами в ту же таблицу
# Game Model
class Game < ActiveRecord::Base
belongs_to :home_team, class_name: "Team"
belongs_to :away_team, class_name: "Team"
belongs_to :winning_team, class_name: "Team"
end
I может быть overthinking это, но я не уверен, как настроить мой Team
модель для have_many игр.
С в моей модели Team простой has_many :games
, мои тесты возвращает следующую ошибку:
Team Associations should have many games
Failure/Error: it { should have_many(:games) }
Expected Team to have a has_many association called games (Game does not have a team_id foreign key.)
Я вижу, что он ищет team_id
для Game
, и так как нет никаких ошибок team_id
его. Но в моей таблице Game
у меня есть три внешних ключа, ссылающихся на один класс. Так мне нужно было бы создать has_many
для каждого home_team
, away_team
и winning_team
?
вопроса о проектировании баз данных никогда не должен включать ОРМ или прикладное программное обеспечение в нем. Это не правильный инструмент для проектирования баз данных. КОГДА-ЛИБО! Реальный дизайн базы данных будет иметь три таблицы: «Игра с подробностями об игре», команда с подробностями о команде и TeamGAme в качестве таблицы соединений для многих и многих ассоциаций. – HLGEM
@HLGEM это не похоже на вопрос о дизайне базы данных, база данных уже настроена функционально. Вопрос в том, можете ли вы залить все три ассоциации вместе с одной ссылкой has_many или нет. Кроме того, почему вы предлагаете таблицу соединений? Подробные сведения об игре в этом случае - две команды, которые играли, похоже, что таблица соединений будет излишней. Может, я что-то упустил? Я думаю, что дизайн базы данных правильный. – GoGoCarl
@GoGoCarl Спасибо, я начал сомневаться в моих методах. И да, я ищу способ обработать has_many с одной строкой или как три отдельные строки has_many. – mikeymurph77