2013-11-23 22 views
0

我有以下設置:與紅寶石多個外鍵on Rails的

一個matchdays表列名爲home_team_id和一個叫visitor_team_idteam表。

我的比賽模式是這樣的:

class Match < ActiveRecord::Base 

    belongs_to :home_team, class_name: "Team", foreign_key: :home_team_id 
    belongs_to :visitor_team, class_name: "Team", foreign_key: :visitor_team_id 
    belongs_to :matchday 

    validates :home_team, presence: true 
    validates :visitor_team, presence: true 
end 

和團隊模式那樣:

class Team < ActiveRecord::Base 
    has_many :matches 
    has_many :player 
end 

現在它變得棘手(至少對我來說)。我希望能夠致電team.matches並獲得球隊的所有比賽。由於每個團隊都有家庭遊戲和路上的遊戲。

目前我收到ActiveRecord::StatementInvalid錯誤,因爲它正在尋找匹配表中的team_id列。

回答

0

所以如果我理解正確,你需要的只是一個方法,返回當前團隊正在玩的所有遊戲。這應該是訣竅:

class Team < ActiveRecord::Base 
    has_many :player 

    def matches 
    Team.where(home_team_id => self.id, foreign_key => self.id) 

    # This line will also work if you want to try it out. 
    # Team.where("home_team_id = ?", self.id).where("foreign_key = ?", self.id) 
    end 
end 

快樂編碼!

+0

'家用= Match.where(:home_team_id => self.id) 訪客= Match.where(:visitor_team_id => self.id) 回國+ visitor'做到了。但對我來說這感覺有點奇怪 –