如果我的模型有两个对同一模型的引用,我该如何设置它?我现在拥有的是
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条目。如果它是off_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"
答案 0 :(得分:2)
问题在于无法将统计数据的实例识别为主页或离开。 (你已经表明了)
可能的解决方法是将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}