Отношения модели Rails

Если у меня есть модель с двумя ссылками на одну и ту же модель, как ее настроить? То, что у меня есть прямо сейчас, это

class Game < ActiveRecord::Base
    has_one :home_team_stats, :class_name => 'Stats'
    has_one :away_team_stats, :class_name => 'Stats'

class Stats < ActiveRecord::Base
    belongs_to :game

Однако, когда Activerecord запускает запрос, он ищет первую запись статистики с game_id, равным x. Поэтому, если home_stats является последней записью, и home_stats, иaway_stats устанавливаются на запись home_stats. Если бы это былaway_game, они оба были бы настроены на это.

Stats Load (0.3ms)  SELECT "stats".* FROM "stats" WHERE "stats"."game_id" = 1 LIMIT 1

Насколько я понимаю, способ обойти это - изменить отношение с has_one на own_to или что-то подобное. Однако это кажется неверным по своей сути, поскольку в просторечии я бы сказал, что статистика принадлежит игре, а в игре есть статистика для домашней и гостевой команд. Есть ли лучший способ настроить это?

EDIT: разобрался.

Я изменил игровую модель на следующую:

has_one :home_team_stats, :class_name => 'Stats', :foreign_key => "id", :primary_key => "home_team_stats_id"
has_one :away_team_stats, :class_name => 'Stats', :foreign_key => "id", :primary_key => "away_team_stats_id"

person user1769426    schedule 05.02.2013    source источник


Ответы (1)


Проблема в том, что нет способа идентифицировать экземпляр Stats как дома или в гостях. (То, что вы показали)

Потенциальное исправление состоит в том, чтобы ввести столбец home в столбец stats, а затем изменить отношения на:

class Game < ActiveRecord::Base
  has_one :home_team_stats, :class_name => 'Stats', :conditions => {:home => true}
  has_one :away_team_stats, :class_name => 'Stats', :conditions => {:home => false}
person Shane    schedule 05.02.2013