2009-04-24 8 views
1

Rails gibt das falsche Datum aus meinen Datenbankdatensätzen zurück. Für mein Modell ("Target"), wenn ich in Skript ausführen/console:Rails & SQLite3: Datum Mis-Match

Target.find :all 

ich alle meine Aufzeichnungen mit den "recorded_on" Feldlesedaten von "2000-01-01 xx erhalten: xx: xx ".

Wenn ich die gleiche Datenbank übernehmen und in der sqlite3-Konsole ausführen:

SELECT * FROM targets; 

ich mit den "recorded_on" Feldlesedaten von "2009-04-22 xx all meine Aufzeichnungen erhalten: xx: xx ", das sind die richtigen Daten.

Die Zeitwerte scheinen zwischen den beiden Werten korrekt zu sein, nur die Datumswerte sind deaktiviert.

Was ist los?

Antwort

0

Die zuverlässige Übersetzung der Zeiten zwischen Schienen und Ihrer Datenbank hängt von vielen Schienen und Datenbankkonfiguration Voodoo, dass I had no patience to tackle.

Meine endgültige Lösung war, Zeitwerte wie Zeiten in der Datenbank zu speichern. Ich speichere Ints:

Modelname.time_column = Time.now().to_i 

(Eigentlich tue ich das to_i Bit in einer Überschreibung der Setter des Attributs und Reverse den Prozess in dem Getter :)

Time.at(read_attribute(:time_column)) 

Es ist ein Hack, aber ich bin glücklich mit seiner Einfachheit und wie einfach es war, es zwischen Konfigurationen und Entwicklungsmaschinen zu bewegen.

Der Nachteil ist natürlich, dass sql Ihnen ein altmodisches int gibt, wenn Sie es abfragen. MySQL hat möglicherweise Möglichkeiten, um zu konvertieren, aber ich bezweifle, dass SQLite wird.

+0

Ahh, ich verstehe. Nun, diese Lösung funktioniert nicht ganz so, wie ich sie brauche (obwohl sie meine Frage beantwortet). Ich bin gerade auf PostgreSQL umgestiegen - kein Problem! Vielen Dank! – neezer