Schienen 2.3.4, sqlite3
Ich probiere das aus
Production.find(:all, :conditions => ["time > ?", start_time.utc], :order => "time DESC", :limit => 100)
En condición funktioniert perfekt, aber ich habe Probleme mit dem :order => time DESC .
Zufällig entdeckte ich, dass es bei Heroku funktioniert (Test mit der Heroku-Konsole), wo PostgreSQL läuft. Allerdings, lokal, mit sqlite3, neue Einträge werden nach den alten sortiert, egal was ich einstelle Zeit zu. Etwa so ( die Ausgabe wurde manuell entfernt ): Der zweite Eintrag ist neu:
Production id: 2053939460, time: "2010-04-24 23:00:04", created_at: "2010-04-24 23:00:05"
Produktionsnummer: 2053939532, Uhrzeit: "2010-04-25 10:00:00", created_at: "2010-04-27 05:58:30"
Produktionsnummer: 2053939461, Uhrzeit: "2010-04-25 00:00:04", created_at: "2010-04-25 00:00:04"
Produktions-ID: 2053939463, Zeit: "2010-04-25 01:00:04", created_at: "2010-04-25 01:00:04"
Sieht aus, als würde sie nach dem Primärschlüssel sortieren, id no Zeit . Beachten Sie, dass die Abfrage funktioniert gut auf heroku, die Rückgabe eine korrekt geordnete Liste! Ich mag sqlite, es ist so KISS, ich hoffe, Sie können mir helfen...
Irgendwelche Vorschläge?
UPDATE/GELÖST: Zeit ist ein reserviertes sqlite3-Schlüsselwort ( Datum unter anderem auch). Aus diesem Grund :order => 'time DESC'
funktioniert in PostgreSQL ( nicht-reserviertes Schlüsselwort ), aber nicht in sqlite3. Die Lösung besteht darin, sqlite3-Schlüsselwörter als Spaltennamen zu vermeiden, wenn Sie jemals beabsichtigen, nach ihnen zu sortieren. Durch Umbenennung wird das Problem gelöst.
Ich habe mit dem Standardschienenmuster getestet aktualisiert_am y erstellt_am was perfekt funktioniert.
Ich bevorzuge immer noch sqlite3 in der Entwicklung, es ist so einfach und reibungslos zu arbeiten, kopieren Sie die Datenbank und senden Sie an Ihren Partner. Danke an @newtover !