2012-08-16 85 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 
相關問題