ActiveRecord-ausführen von roh-sql-nicht wieder irgendwelche Ergebnisse?
ActiveRecord::Base.connection.execute "SELECT sometable.* from sometable limit 10"
(76.1ms) SELECT sometable.* from sometable limit 10
=> #<PG::Result:0x007fbd99647608
@connection=
#<PG::Connection:0x007fbd9ac05fa8
@notice_processor=nil,
@notice_receiver=nil,
@socket_io=nil>>
Nicht sicher, warum werden keine Ergebnisse zurückgegeben. Es ist definitiv eine aktive Verbindung, und ich bin in der Lage, Abfrage der Datenbank mit der normalen ActiveRecord-Abfrage-Schnittstelle. Aber wenn ich den Schalter auf raw sql bekomme ich das oben genannte problem
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mysql2::Result
oderPG::Result
Objekt hat eineneach
Methode Durchlaufen ErgebnisseHinweis: Sie können nicht auf die Ergebnisse wie array. Verwenden müssen
each
MethodeVersuchen
select_all
wenn Sie wollen Ergebnisse inArray
Was Sie sehen, ist das Ergebnis aus einer postgresql-Datenbank: die PostGresResult. (Daher das "PG) pg Juwel ist, wie Sie sich mit der Datenbank verbinden. Hier ist das wiki für die PG gem.
Die 'pg' gem doc (und Verwandte libpg) gibt all die spannenden details über die Feinheiten der Interaktion mit einer Postgresql-db.
PG::PGResult
ist jetzt bezeichnet alsPG::Result
. Die Dokumentation PG::Ergebnis ist hier.@shiva hat Recht: Für Postgres, die Ergebnisse sind nicht ein Array. (Andere Datenbanken scheinbar return Arrays von diesen anrufen). Aber die
PG::Result
- Klasse enthält Methoden für das Durchlaufen jeder Zeile, die Konvertierung in einen Hash, und mehr. (Das ist, was @shiva war eine Anspielung auf.) Schauen Sie sich die Dokumentation link oben.Sie müssen
require 'pg'
in Ihre spezifischen Quell-Datei, je nachdem, wie Sie Ihr Projekt & Entwicklung-Umgebung einrichten. (Da kann man die Verbindung zu der Datenbank haben Sie bereits die pg-gem installiert).Hier die übersicht und ein Beispiel aus der
PG::Result
Dokumentation Seite:Nur leuchtet das Beispiel ein wenig:
Obigen Beispiel gibt eine Zeile (index = 0) mit drei Spalten. Die erste Spalte wird 'a'; es ist eine weitere Spalte mit der Bezeichnung " b " und die Dritte Spalte heißt 'c'. Sie können den Wert für die erste Spalte der ersten Zeile als:
und es wird wieder den Wert '1'
Können Sie den Wert für die zweite Spalte in die erste Zeile als:
und es wird wieder den Wert '2'
In der Dritten Zeile des Beispiels verwendet den gleichen Ansatz, um den Wert der Spalte 'c' für die erste Zeile (die einen Wert zurückgibt, der
nil
).Natürlich können Sie die mehr lesbar Methoden in
PG::Result