使用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手?” –