2016-07-30 34 views
0

請從以下代碼中知道如何將user_id,:player_id和:amount屬性一起顯示在一個散列中?如何顯示rails select語句中的所有屬性?

目前創建的數組返回player_id作爲鍵值的數量爲{1695 => 100,1714 => 200},而我需要類似於{1695 => {:user_id,100}?

控制器中的代碼如下:

@duplicates = Bid.select(:player_id, :user_id, :amount).group(:player_id).having("count(*) > 1").maximum(:amount) 

視圖中的代碼:

<div class="col-sm-3" style="background-color:white;"> 
     <%= @duplicates %><br> 
    </div> 
+0

這裏'11695 => 100'哪一個是金額,什麼是user_id? '{1695 => {:user_id,100}'不是有效的Ruby語法。 :)正確告訴它。 –

+0

金額爲100,玩家ID爲1695 :)並且我希望玩家ID在這種情況下的密鑰1695返回{:user_id,:amount}的值,因此有2個值與:player_id鍵相關:)是這可能通過使用select語句在ruby中實現哈希構造還是有更好的方法? – Jase

+0

好吧,那麼你的正確的語法將是'{duplicates.map!'這樣的代碼'{1695 => [:user_id,100]''。 {| rec | {錄音。 player_id => [rec.user_id,rec.amount]}' –

回答

0

我要補充,我們從對話中的意見想出了答案主要職務:

@duplicates = Bid. 
    select("player_id, user_id,MAX(amount)"). 
    group(:player_id). 
    having("count(*) > 1") 

現在裝飾效果按你的用例:

@duplicates.map! do |rec| 
    { rec. player_id => [ rec.user_id, rec.amount ] } 
end