views:

108

answers:

1

How convert a string into a ActiveSupport::TimeWithZone? My dilemma is this. I need to update a field (called updated_at). The field in mysql is datetime, and the class is ActiveSupport::TimeWithZone. But the dates are strings like "10/17/2008". I used "10/17/2008".to_date (And I intend .to_time and to_datetime), and even if in console the ActiveRecord class save succesfully, the field in the database still is the current date...

Thanks in advanced.

A: 

OK.. let's take them one at the time.

First, it is not recomended to set a field name 'updated_at', since this is a magic field that is automatically populated by rails.

If you want to disable this functionality, you may:

class Foo < ActiveRecord::Base
  self.record_timestamps = false
end

in your class, but this will also disable created_at fields.

The best option is to add a new field (EG my_updated_at) as date in the database, and then rails will automatically handle conversions, meaning that the next snippet will work:

Foo.new({:my_updated_at => "10/17/2008"})

Second, the answer on how to parse a string to ActiveSupport::TimeWithZone is:

ActiveSupport::TimeZone['UTC'].parse("10/17/2008")

but i don't think this helpes you (of course, change UTC with your current date/time).

Vlad Zloteanu