Forum: Ruby on Rails Rails 2.1.1 setting datetime to nil at 00:00:00

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
AD (Guest)
on 2008-11-04 00:03
(Received via mailing list)
Hello,
 There appears to be a strange bug in Rails 2.1.1 where if I set a
datetime
field to YYYY-MM-DD 00:00:00 (using TimeZone support) Rails returns nil,
instead of YYYY-MM-DD 00:00:00

  Here is confirmed output:

>> c = Clip.find(53385)
=> #<Clip id: 53385, title: "test 2", description: "test2", keywords:
"test2", publish_date: "2008-11-03 11:13:00">
>> c.publish_date = "2008-11-03 19:00:00"
=> "2008-11-03 19:00:00"
>> c.save
=> true
>> c = Clip.find(53385)
=> #<Clip id: 53385, title: "test 2", description: "test2", keywords:
"test2", publish_date: nil>
>> c.publish_date
=> nil

 Any reason for this behavior ?

Adam
Philip H. (Guest)
on 2008-11-04 01:17
(Received via mailing list)
> => #<Clip id: 53385, title: "test 2", description: "test2", keywords:
> "test2", publish_date: "2008-11-03 11:13:00">
>>> c.publish_date = "2008-11-03 19:00:00"
> => "2008-11-03 19:00:00"
>>> c.save
> => true
>>> c = Clip.find(53385)
> => #<Clip id: 53385, title: "test 2", description: "test2", keywords:
> "test2", publish_date: nil>
>>> c.publish_date
> => nil

Your example isn't setting it to 00:00:00, but 19:00:00  ?

Also, what does the database say?  I'd want to see it confirmed there
as well.  And lastly, are there any before/after filters on this
model?  Any triggers in the database that might affect it?
AD (Guest)
on 2008-11-04 02:08
(Received via mailing list)
I used 19:00 b/c of Time zones (EST is GMT-5).  I have a before_filter
that
sets the time zone to either the users time zone, or EST by default.
 Database is storing it as 00:00:00 b/c we store as UTC
before_filter:      Time.zone = current_user.timezone ?
 current_user.timezone : $DEFAULT_TIME_ZONE  where DEFAULT is EST

mysql> select id,publish_date from clips where id=53385 ;
+-------+---------------------+
| id    | publish_date        |
+-------+---------------------+
| 53385 | 2008-11-04 00:00:00 |
+-------+---------------------+

Its a datetime field in DB
| publish_date              | datetime

Adam
AD (Guest)
on 2008-11-04 03:50
(Received via mailing list)
confirmed to be an issue with validates_date_time
http://www.semergence.com/2006/12/20/validates_dat...
George (Guest)
on 2008-11-04 16:44
(Received via mailing list)
Whenever I need to store and manipulate a date independent of time, I
prefer using the SQL Date type and corresponding ActiveSupport Date
type. It's a lot cleaner for parsing and validating.
This topic is locked and can not be replied to.