使用Rails 4.0.0,ruby 2.0p247和mysql2 0.3.13 gem。在我的表在MariaDB的A柱5.5是否activerecord截斷時間戳精度?
注:MariaDB的已微秒級精度的支持,因爲5.3
`updated_at` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP,
精度應該是微秒,所以我在我的模型文件試圖
before_save :set_update
def set_update
# also tried
# self.updated_at = "2013-10-03 12:35:00.123456 -700"
# self.updated_at = Time.now.strftime "%Y-%m-%d %H:%M:%S %6N"
# self.updated_at = Time.now.iso8601(6)
# doesn't work, still no microseconds
self.updated_at = Time.now.to_f
end
但在它仍然是數據庫
| updated_at |
+----------------------------+
| 2013-10-03 19:35:00.000000 |
+----------------------------+
爲什麼rails/activerecord沒有存儲微秒conds?
我猜這是因爲這樣的數據庫的默認不知疲倦AR被分配值'created_at'和'updated_at'你背後。用一個不同的名字再試一次(並且省略'DEFAULT CURRENT_TIMESTAMP',因爲AR不會理解它,並且可能假裝它不存在並且可能會把所有東西都搞砸)。 –
@ muistooshort當我硬編碼的值看到(self.updated_at =「2013-10-03 12:35:00.123456 -700」),AR確實使用該值,而不是當前時間,但AR截斷爲(「2013-10- 03 12:35:00「) – Derek
AR可能會忽略您嘗試更改'updated_at',因爲AR知道'updated_at'是特殊的。再次嘗試使用名稱爲** not **'updated_at'的列,以避免AR出現問題。那麼,如果這樣做,至少你知道真正的問題是什麼,你可以問「如何讓我的'updated_at'列的AR手?」 –