2016-07-30 9 views
0

Wäre es möglich zu wissen, wie man die Attribute: user_id,: player_id und: amount zusammen in einem Hash aus dem untenstehenden Code anzeigt?Wie zeige ich alle Attribute aus einer Rails-Select-Anweisung an?

Das zurückgegebene Array gibt zur Zeit player_id als Schlüssel und Betrag als Wert {1695 => 100, 1714 => 200} zurück, während ich etwas wie {1695 => {: user_id, 100} brauche?

Der Code in der Steuerung ist wie folgt:

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

Der Code in der Ansicht:

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

hier '11695 => 100' welche ist Menge und was ist user_id? Und '{1695 => {: user_id, 100}' ist keine gültige Ruby-Syntax. :) Sagen Sie es richtig. –

+0

Betrag ist 100 und Spieler-ID ist 1695 :) und ich möchte den Schlüssel der Spieler-ID in diesem Fall 1695, um einen Wert von {: user_id,: amount} so gibt es 2 Werte mit dem: player_id Schlüssel :) ist Dies ist mit einem Hash-Konstrukt in Ruby über die Select-Anweisung möglich oder gibt es einen besseren Weg? – Jase

+0

Ok, dann ist Ihre korrekte Syntax '{1695 => [: user_id, 100]' .. Code wie '@ duplicates.map! {| rec | {empf. player_id => [rec.user_id, rec.amount]} ' –

Antwort

0

ich die Antwort hinzufügen werde, die wir kamen aus den Gesprächen in den Kommentaren von die Hauptpost:

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

nun das Ergebnis nach Ihrer usecase dekoriert:

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