0
我有一段代碼通過id獲取關聯對象,否則它會初始化一個新對象。不知道如何優化活動記錄關聯
def pick_for_game(game_id)
picks.find_or_initialize_by_game_id(game_id)
end
挑選集合通常會有幾百個項目。這兩個用例有:
我想調用這個方法15-30場比賽
我想調用這個方法的所有遊戲
好像目前的做法用例a是可以的,但對於用例b來說絕對是可怕的。我能基於與否挑選這種方法複雜,已即時加載類似如下:
def pick_for_game(game_id)
if picks.loaded?
new_pick = proc {
Pick.new do |p|
p.game_id = game_id
end
}
picks.detect(new_pick) do |p|
p.game_id == game_id
end
else
picks.find_or_initialize_by_game_id(game_id)
end
end
然而,就選擇一個方法比其他所有情況比使代碼乾淨了一點其他任何好處?任何其他解決這個問題的方法?