3

我正在使用Postgres數據庫處理Rails項目。對於我的一個模型,我有一個時間專欄,稱爲(巧妙的)時間。當我創建模型時,我將此列的數據類型設置爲'time',並且(可能不正確)理解此數據類型僅用於存儲時間,而不是日期。Rails Activerecord/Postgres時間格式

t.time :time 

然而,當我提交的數據模型,時間是正確的,但由於不正確的日期前綴:

time: "2000-01-01 16:57:19" 

我只是想保存時間的列(如'16:57 :19' )。 '時間'是正確的數據類型嗎?還是有其他方法可以解決這個問題?

非常感謝。

+1

Rails應該將'time'類型映射到Postgres時間類型。你確定你在開發環境中使用postgres而不是sqlite嗎? – max

+0

@max:OP沒有映射任何東西,ActiveRecord是。見下文。 –

+0

是的 - 我把它設置爲在開發中使用Postgres – skwidbreth

回答

9

問題是在Ruby或Rails中沒有時間類。所有時間等級都是日期或時間戳(即日期加上一天的時間)。

在數據庫內部,它將是一個time(不帶時區)列,它將在數據庫內正常運行。但是,一旦進入Ruby,ActiveRecord將添加日期組件,因爲沒有可用的普通時間類,它恰好使用2000-01-01作爲日期。

在數據庫中的一切都會好的,但是當你在Rails數據庫之外時,你必須謹慎地忽略日期組件。

+0

好吧,這很有趣,謝謝。我不知道。 – skwidbreth