数据库 如何关闭 Rails 4.2 在 MySQL 的毫秒精准度支援

lulalala · 2015年11月03日 · 最后由 huobazi 回复于 2015年11月03日 · 2448 次阅读

Rails 4.2 起可以在 MySQL 中的 datetime 栏位支援毫秒了,不过实际上似乎需要做 migration,比如说我之前的栏位都是使用预设的 datetime,依照 http://dev.mysql.com/doc/refman/5.7/en/fractional-seconds.html 所说这样预设就是不能存毫秒。只有特别设定 datetime(6) 才能存。

但是目前我不想要做 migration,可是预设精准度 0 会导致许多 spec 错误。Rails 没有聪明到说看到精准度 0 就把 select statement 自动也转成精准度 0,导致我许多 spec 在检查如“这一小时内产生的东西”都会出错,因为存进资料库的是 xxxx/xx/xx 00:00:00,但是读资料时却使用 xxxx/xx/xx 00:00:00.123123。

有办法让 Rails 4.2 暂时不使用 fractional second 吗,也就是诸如 select 的指令也都统一把毫秒的部分拿掉。

不知道这个是不是有关:

config.active_support.time_precision sets the precision of JSON encoded time values. Defaults to 3.

哭哭,Rails master 二月就有支援依照资料库栏位的精准度做 sql statement 的输出,但是没有 merge 到 4.2.x 中。只能等到 5.0 才能有这功能的样子。

https://github.com/rails/rails/pull/18914

自己 fork 一份 merge 进去,先用自己的 branch 静静的等待 rails 5.0 发布

需要 登录 后方可回复, 如果你还没有账号请 注册新账号