ActiveModel грязный, чтобы игнорировать миллисекунды - PullRequest
0 голосов
/ 17 ноября 2018

Как я могу заставить ActiveModel :: Dirty игнорировать миллисекунды при сравнении даты и времени в Rails.

     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

1 Ответ

0 голосов
/ 19 ноября 2018

Я думаю, что самый простой обходной путь может заключаться в том, чтобы просто добавить пользовательский установщик в эту модель, который усекает миллисекунды каждый раз при назначении нового значения.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...