2016-07-30 87 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