同じモデルへの 2 つの参照を持つモデルがある場合、どのように設定すればよいですか? 私が今持っているのは
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 の最初の Stats エントリが検索されます。したがって、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 から belongs_to などに変更することです。統計はゲームに属し、ゲームにはホーム チームとアウェイ チームの統計があると口語的に言うので、それは本質的に間違っているように感じます。これを設定するより良い方法はありますか?
編集:それを理解しました。
ゲームモデルを次のように変更しました。
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"