2012-03-25 8 views
0

ich eine benutzerdefinierten SQL-Abfrage, die ich mit dieser Linie laufen:Formatierung Ergebnisse von SQL in Ruby On Rails

@avg_score = "#{ActiveRecord::Base.connection.execute(@avg_score_SQL)}" 

, wenn dieser ausgeführt wird, hat @avg_score einen Wert von:

[{"score"=>8, 0=>8}] 

die Ergebnisse sind korrekt, aber es druckt es so: -/Ich will nur, dass es die "8" ausdruckt

Wie bekomme ich es, nur den Wert der Partitur zu drucken?

+0

versuchen select_one statt execute – Fivell

Antwort

2

[{"score"=>8, 0=>8}] ist nur ein Array mit einem Element, und dieses Element ist ein Hash. So können Sie auf die Punktzahl wie folgt zugreifen:

@avg_score[0]['score'] 
0

Wenn Sie die Methode execute verwenden, müssen Sie das Ergebnisobjekt freigeben, nachdem Sie es fertig sind. Auch Ihre Anweisung kann ohne Anführungszeichen verwendet werden. Wenn Sie immer 1 Ergebniszeile haben, sollten Sie besser selecy_one verwenden