2016-08-02 75 views
0

我是新來的Rails,我有一個包含用戶ID,團隊ID和數字的連接表,基本上用戶可以有很多團隊,團隊可以有很多用戶,團隊屬於到比賽中,這些數字應該是每個比賽唯一的,我想要做的就是讓所有的行包含團隊從一個特定的比賽,基本上像Rails'在哪裏'與協會

MyJoinTable.where(team.tournament_id: self.team.tournament_id) 

但是,這並不工作,任何建議如何使此

+0

將您與您的確切型號和協會闡述更多? – hgsongra

回答

0

達到你想要什麼,你可以這樣做:

Team.joins(:tournaments).merge(Tournament.where(id: self.team.tournament_id))

+0

謝謝,我已經通過獲得所有會員資格來繞過它,然後只保留與當前錦標賽ID匹配的錦標賽。 – Robert

+0

如果我明白了,您向數據庫發出了一個請求以獲得所有成員資格,然後您對它進行迭代以僅選擇那些您想要的資源?在這種情況下,這並不是最優化的,隨着數據庫的增長,您可能會面臨性能問題。我真的建議你直接在數據庫中執行操作(使用我的解決方案或純SQL)。 – Aeradriel

0

基本上你有

class Team 
    has_and_belongs_to_many :members 
    belongs_to :tournament 
end 

class Member 
    has_and_belongs_to_many :teams 
end 

class Tournament 
    has_many :teams  
end 

然後tournament.teams將產生所有錦標賽的球隊。 或Team.where(tournament_id: an_id)也可以工作,如果你沒有錦標賽實例。 加入/包括會員表格同樣容易得到所有錦標賽的成員。

如果您的連接表包含更多數據,則連接表的ID將由has_many:through關係替換has_and_belongs_to_many。見docs