jeudi 13 août 2015

Datetime fails to save but without error

I try saving a row that has an attribute named class_datetime (which is a DateTime) and it silently fails. Here's an example:

I create a new LittleClassSession, like so:

irb(main):010:0> l = LittleClassSession.new
=> #<LittleClassSession id: nil, length: nil, class_datetime: nil, created_at: nil, updated_at: nil, little_class_id: nil, location_id: nil, session_series_token: nil>

The class_datetime is a DateTime:

irb(main):011:0> LittleClassSession.columns_hash["class_datetime"].type
=> :datetime

I set the attribute:

irb(main):012:0> l.class_datetime = DateTime.now
=> 2015-08-13 22:02:09 -0400

And I save (no validations yet):

irb(main):013:0> l.save
   (0.1ms)  begin transaction
  SQL (0.4ms)  INSERT INTO "little_class_sessions" ("class_datetime", "created_at", "updated_at") VALUES (?, ?, ?)  [["class_datetime", "2015-08-13 22:02:09.976030"], ["created_at", "2015-08-13 22:03:01.255911"], ["updated_at", "2015-08-13 22:03:01.255911"]]
   (2.6ms)  commit transaction
=> true

Looks like it worked. Let's see what I saved:

irb(main):014:0> l
=> #<LittleClassSession id: 728, length: nil, class_datetime: "2015-08-14 02:02:09", created_at: "2015-08-14 02:03:01", updated_at: "2015-08-14 02:03:01", little_class_id: nil, location_id: nil, session_series_token: nil>

Let's see what's in the table:

irb(main):015:0> LittleClassSession.last
  LittleClassSession Load (0.2ms)  SELECT  "little_class_sessions".* FROM "little_class_sessions"   ORDER BY "little_class_sessions"."id" DESC LIMIT 1
=> #<LittleClassSession id: 728, length: nil, class_datetime: nil, created_at: nil, updated_at: nil, little_class_id: nil, location_id: nil, session_series_token: nil>

What could be causing this? Recently I changed the default timezone in application.rb, but I don't see why that might be the reason.

Aucun commentaire:

Enregistrer un commentaire