在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
答案 0 :(得分: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