ruby-on-rails - ActiveModel 脏到忽略毫秒
问题描述
在 Rails 中比较日期时间时,如何使 ActiveModel::Dirty 忽略毫秒。
news.publish_at
=> Fri, 16 Nov 2018 17:05:37 CET +01:00
news.publish_at = news.publish_at.to_s
=> "2018-11-16 17:05:37 +0100"
news.publish_at_changed?
=> true
但是如果我在上面的日期时间中添加毫秒,改变了吗?是假的。
news.publish_at = "2018-11-16 17:05:37.517 +0100"
=> "2018-11-16 17:05:37.517 +0100"
news.publish_at_changed?
=> false
我正在使用 Rails 5.2.1
解决方案
我认为最简单的解决方法可能是向该模型添加一个自定义设置器,该设置器在每次分配新值时都会截断毫秒。
def publish_at=(value)
if value
time_without_usec = DateTime.parse(value).change(usec: 0)
value = time_without_usec.to_s
end
super(value)
end
推荐阅读
- ios - Admob 中介过程中的网络凭据无效
- c# - 列缩小时如何在 DataGridTextColumn 标题中显示椭圆和/或滚动条?
- java - Java Spring Swagger 启动时间 启动行为
- c# - 防止列表框选择改变
- networking - 无法在 HoloLens 服务器上接收 HTTP 消息
- spring - 配置属性和配置文件中的元素列表
- html - 从类型为“日期”的输入元素中删除选定的日期
- excel - VBA 拒绝启动
- ios - iOS 上的 Firebase Analytics 事件 - 测试和生产
- openedge - 如何使用连接表定义 prodataset