Это выглядит как объединение объединения, назовите это Match
, и
class Clan < ActiveRecord::Base
has_many :home_matches, :class_name => 'Match', :foreign_key => :clan_home
has_many :away_matches, :class_name => 'Match', :foreign_key => :clan_away
has_many :opponents_at_home, :through => :home_matches, :source => :clan
has_many :opponents_away, :through => :away_matches, :source => :clan
end
class Match < ActiveRecord::Base
belongs_to :clan_home, :class_name => 'Clan'
belongs_to :clan_away, :class_name => 'Clan'
end
Это немного за пределами моего личного опыта , и я не на 100% уверен в интерпретациидокументации для :source
(отметьте http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html). Однако, я думаю, что это будет в правильном направлении. YMMV .
Комментарии и улучшения приветствуются!