2012-08-16 44 views
0

我只是假设一些rails魔术会自动将一个传入的帖子w/unix时间1345069440000转换为后端的相应日期时间。但是,我有一个名为“start_at”和DateTime模型事件:如何使用UNIX时间戳update_attributes并自动设置MySQL DATETIME?

e = Event.new() 
e.start_at = 1345069440000 
e.save 

看来直通发送1345069440000,然后mysql的空值了。同样的,红宝石时间

e = Event.new() 
e.start_at = 1345069440 
e.save 

,如果我将其设置为一些任意的字符串,它推断一个更好的工作:

e.start_at = '1/1344/12' 
e.save 

设置日期为“1334年12月1日00:00: 00 UTC +00:00“。因此,它正在尝试。

显然,我可以重写我的类中的setter,但我希望将此行为更改得更高,以便所有控制器都支持任何unix时间日期时间被传递了。

的Rails 3.2的Ruby 1.9.2

回答

1

貌似从active_record/attribute_methods/time_zone_conversion.rb这段代码试图做转换:

unless time.acts_like?(:time) 
    time = time.is_a?(String) ? Time.zone.parse(time) : time.to_time rescue time 
end 

一种选择(虽然有点重手),将猴子补丁Fixnum对象添加.to_time方法:

def to_time 
    Time.at(self) 
end 
相关问题