gpt4 book ai didi

mysql - 在 MySQL 上禁用 Rails 4.2 小数秒支持

转载 作者:行者123 更新时间:2023-11-29 01:38:10 25 4
gpt4 key购买 nike

所以 Rails 4.2 开始支持 MySQL 的小数秒。然而it requires a migration of column change from datetime to datetime(6) .目前我们不想这样做,只想像以前一直做的那样忽略小数秒。

Rails 不够智能,无法看到我的日期时间精度为 0 并相应地更改查询,因此我们的很多规范都被破坏了。例如我们断言“select all Foo created within a last hour”,但是值没有毫秒持久化,但是select语句仍然使用毫秒,所以很多记录不会被选择。

在 Rails 4.2 之前:

where("foo_at >= ?", 1.day.ago) => foo_at >= '2015-11-02 04:48:18'

在 Rails 4.2 中:

where("foo_at >= ?", 1.day.ago) => foo_at >= '2015-11-02 04:48:18.934162'

是否有一个全局设置来强制 AR 查询像以前一样去除小数/毫秒?

最佳答案

没有正式的方法来关闭它,但你可以覆盖这个行为,

module ActiveRecord
module ConnectionAdapters
class Mysql2Adapter < AbstractMysqlAdapter
def quoted_date(value)
super
end
end
end
end

它在 https://github.com/rails/rails/blob/v4.2.5/activerecord/lib/active_record/connection_adapters/mysql2_adapter.rb#L77-L83

并且您可以在 Rails 5 中删除它,在 rails 5 中提交 https://github.com/rails/rails/commit/bb9d20cf3434e20ac6f275e3ad29be42ebec207f应该根据时间列的精度格式化时间字符串

关于mysql - 在 MySQL 上禁用 Rails 4.2 小数秒支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33471369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com