我有模型用戶,聯盟和團隊。用戶擁有多個聯賽和has_many球隊,聯盟has_many球隊和has_many用戶,並且球隊屬於聯盟並且屬於某個用戶。Rails Postgres:查詢在「三角形模型」中查找相應模型
鑑於目前的用戶,我想要做的是找到屬於該用戶的所有聯賽和球隊,但將他們配對,使每個球隊與其所屬的聯盟配對。理想情況下,我希望儘可能少地進行查詢 - 配對也很重要,因爲我將在邊欄中將每一對顯示爲一行。
這是我當前的嘗試(工作):
def get_user_leagues_and_teams(user)
@leagues_teams = Hash.new
if (!user.teams.nil?)
@teams = user.teams.all
end
#Creates hash of leagues and teams (assuming one to one)
@teams.each do |team|
league = team.league
@leagues_teams[league] = team
end
@leagues_teams
end
上述作品。但是,我不認爲這是非常有效的。我查找所有用戶團隊,然後逐個查找每個團隊的聯盟,並將每個團隊存儲在一個哈希中。對於擁有許多聯賽/團隊的用戶來說,這將是太多的數據庫調用。此外,如果我想將其他模型與需要與聯盟/團隊匹配的用戶(例如遊戲,交易等)關聯起來,那麼這不會很好地擴展。
是否有更好的查詢?
謝謝!
完美。謝謝!! 1 –