So speichern Sie Daten in der lokalen Zeitzone db mit rails3?

Habe ich Rails3-Anwendung mit model user und Feld expires_at wie folgt erstellt:

t.column :expires_at, :timestamp

In meiner Datenbank (postgresql) es hat den Typ:

timestamp without timezone

Das problem ist, wenn ich rufe:

@user.expires_at = Time.now
@user.save

es ist gespeichert in der Datenbank mit der UTC-Zeitzone (meine lokale Zeit ist UTC + 1:00, Warschau), aber ich möchte das nicht. Ich will nur Zeit mit meinen lokalen Zeitzone gespeichert in der Datenbank (2011-03-30 01:29:01.766709, nicht 2011-03-29 23:29:01.766709)

Kann ich erreichen, das mit rails3?

  • Vorsicht! Wenn Sie Benutzer, die über mehr als eine Zeitzone, das bekommen unordentlich fallen. Ich ziehe alle meine Zeiten als UTC in die DB, und nur Sie zu konvertieren nicht-UTC für die Anzeige auf der client-Seite (Sie können konvertieren eine Zeit von UTC, die Zeitzone einstellen, in der ein Benutzer das OS mit ein wenig JavaScript). Viel Glück!
  • was Datenbank-Abfragen, wenn ich Eingaben von user?? ActiveRecord convers es um die UTC automatisch?
  • Das ist eine gute Frage, aber ich bezweifle, dass es - wäre es zu wissen, die Zeitzone des Benutzers in der Lage sein, um die richtigen Konvertierung. Wenn Sie speichern möchten, die vom Benutzer gelieferten Daten, die als UTC, wirst du wohl konvertieren müssen Sie die client-Seite (urgh). Ich habe date.js für meine client-side-Konvertierungen, aber ich habe nur getan, Anzeige - ich habe nie akzeptiert Datumsangaben als Eingabe...
Schreibe einen Kommentar