這應該是一個簡單的方法,但我已經在Google上搜索了一些。Rails ActiveRecord,Postgres中的INSERT默認字段值
我想爲我的rails應用程序創建一個數據庫日誌。日誌是一個postgres表,其中有一個timestamp
字段,我給出DEFAULT
的current_timestamp
。如果我將timestamp
字段從我的INSERT
查詢中刪除,它將在原始SQL中完美工作,它會正確獲取當前時間戳。
在鐵軌上,我有;
entry = LogTable.new :fieldA => 'valA', :fieldB => 'valB'
entry.save
(LogTable延伸的ActiveRecord :: Base)中
導致包含所有領域,包括timestamp
字段設置爲NULL
,這是不是數據庫所允許的INSERT
查詢,以便它錯誤。
我試過設置:timestamp => 'current_timestamp'
和:timestamp => 'DEFAULT'
,但最終都試圖將其設置爲NULL
。
我認爲這是行不通的,因爲這個字段實際上是一個postgres'DATETIME_WITH_TIMEZONE'字段,而不僅僅是一個簡單的unix時間戳。我無法檢查,直到明天早晨,但感謝您的意見。 – lynks 2013-02-28 19:33:50
應該可以工作,因爲它基本上與我從這裏推斷的一樣:http://stackoverflow.com/questions/9571392/ignoring-timezones-altogether-in-rails-and-postgresql/9576170#9576170。你可能需要做'Time.zone.now'而不是'Time.now',儘管我懷疑(如果我理解的話,將會被轉換爲UTC)。你仍然需要嘗試。 – moonfly 2013-02-28 19:44:30