ActiveRecord parse string in datetime?

Wenn ich passieren eine String in Datetime Spalte, während die Schaffung neuer AR-Objekt, wird es automatisch Parsen:

1.9.2p290 :011 > Movie.new(:release_date=>"21-Nov-1990")
 => #<Movie id: nil, release_date: "1990-11-21 00:00:00", created_at: nil, updated_at: nil>

Wie funktioniert Rails oder ActiveRecord, tun diese Magie? Welche Methode benutzt?

  • Ich merke auch, dass die Date Spalte Verhalten sich auf die gleiche Weise wenn ich eine Zeichenfolge übergeben, um es. Ich fand, dass es eine cast_value(value) Methode in rails/activemodel/lib/active_model/type/date.rb (im Gesicht gibt es viele cast_value(value) Methoden für jeden Typ, die in active model), call fast_string_to_date(value) oder fallback_string_to_date(value) Methoden, wenn der Wert ein String ist. Ich denke, die cast_value lass dich von ActiveModel, bevor Sie den Datensatz speichern.
InformationsquelleAutor Lai Yu-Hsuan | 2012-03-15
Schreibe einen Kommentar