Hi,
for some reason, all timestamp fields with or without time zone in my
Postgres tables seem to be casted to nil. From console:
me = User.find(‘PS12345’)
=> #<User:0x2379788 @attributes={“mtime”=>“01.03.2006 13:26:32.737166”,
“valid”=>“8”, “valid_from”=>“01.03.1999 14:09:21 CET”,
“valid_thru”=>nil, “lastlogin”=>“13.03.2006 16:04:58”,
“password”=>“cbd8f7984c654c25512e3d9241ae569f”, “login”=>“PS12345”,
“email”=>“[email protected]”}>puts me.valid_from
nil
=> nil
Using before_type_cast, I can see the content is still there, albeit as
string:
puts me.valid_from_before_type_cast
01.03.1999 14:09:21 CET
=> nil
Saving a modified object sets all timestamps to nil:
me.valid=0
=> 0me.save
ActiveRecord::StatementInvalid: PGError: ERROR: null value in column
“valid_from” violates not-null constraint
: UPDATE users SET “email” = ‘[email protected]’, “mtime” = NULL,
“lastlogin” = NULL, “valid_from” = NULL, “valid” = 0, “password” =
‘cbd8f7984c654c25512e3d9241ae569f’, “valid_thru” = NULL WHERE login =
‘PS12345’
This happens for me with Ruby 1.8.2 and 1.8.4, Rails 1.0.0 on OS X and
Windows, with postgres-pr or ruby-postgres as gems (Postgres 8.1.2). I’d
be thankful for any ideas on why this happens …
Cheers,
Jan