2016-01-27 16 views
-1

我想創建一個名爲winners的散列。創建一個包含數組的散列

我有一個模型叫arcade每個甚至有games與它相關聯。我正在嘗試創建與每個獎項相匹配的獲勝者散列。

arcade.rb是:

def prizes_by winner 
    winners = {} 
    self.games.each do |g| 
    high_score = g.high_score 
    if high_score 
    winners[high_score.user] ||= [] 
    winners[high_score.user] << g 
    end 
    end 
end 

當我哈希回到它不包含每個high_score.user的關鍵。

我期待有一個哈希看起來像:

winners{ 
    user1 => [game1, game2, game3...] 
    user2 => [game 4] 
    user3 => [game10, game11] 
    ... 
} 
+0

「贏家」參數有什麼用處? –

+0

@WandMaker我剛剛修復它應該是高分 –

+1

你期望什麼哈希,例如? – sschmeck

回答

0

怎麼這樣呢?使用each_with_object

def prizes_by winner 
    games.each_with_object({}) do |game, hash| 
    if high_score = game.high_score 
     (hash[high_score.user] ||= []).push(game) 
    end 
    end 
end 

我還沒有測試過這個。

相關問題