2013-10-13 16 views
1

我看到很多類似的問題,但他們都傾向於關注視圖部分而不是數據庫部分。假設您的客戶需要將created_at字段保存在特定的本地時區,例如EST。使而是保存該如何更改created_at字段的RAILS默認時間戳格式(存儲在數據庫中)?

默認情況下軌將保存該數據庫

太陽,二零一三年十月十三日20時35分47秒+0000

我需要改變的行爲上:

太陽,2013年10月13日16時35分47秒+0000

回答

3

您可以在config/application.rb中配置ActiveRecord將考慮的時區。例如,你可以添加以下內容:

config.time_zone = 'Eastern Time (US & Canada)' 
config.active_record.default_timezone = 'Eastern Time (US & Canada)' 

official guides

  • config.active_record.default_timezone確定是否使用 Time.local(如果設置爲:本地)或Time.utc(如果設置爲:utc) 從數據庫中提取日期和時間。缺省值爲:utc爲 Rails,但Active Record默認爲:在使用 Rails之外的本地。

  • config.time_zone設置應用程序的默認時區, 啓用活動記錄的時區感知。

+0

Thanks Agis。我可能有其他錯誤。在我的application.rb文件的答案中添加了兩行後,Rails使用localtime填充created_at字段 - 4小時。因此,如果我在美國東部時間下午6點添加了一條記錄,它會在下午2點記錄created_at記錄。此外,在回答中的兩行代碼中,我的默認顯示所有記錄視圖停止顯示created_at字段,它現在顯示爲空白。 – Geo

相關問題