Проблема сравнения Ruby DateTime - PullRequest
0 голосов
/ 01 июня 2011

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

def valid_date_interval
  if self.expired_at && self.published_at
    errors.add(:published_at, I18n.t('ubiquo.highlight.error_invalid_interval')) if self.expired_at <= self.published_at
  end
end

Однако у меня есть результаты, которые не имеют смысла для меня при сравнении двух дат. Два DateTimes thar одновременно получают по сравнению с false. Вот некоторый код irb:

(rdb:1) p self.published_at.to_i == self.expired_at.to_i
true
(rdb:1) p self.published_at.to_i == self.expired_at.to_i + 1
false
(rdb:1) p self.published_at == self.expired_at
false
(rdb:1) p self
#<Highlight id: nil, title: "MyString", published_at: "2011-06-02 10:22:05", expired_at: "2011-06-02 10:22:05", created_at: nil, updated_at: nil, program_id: 827572094>

Кто-нибудь может просветить меня, как работают эти сравнения?

ура!

1 Ответ

2 голосов
/ 01 июня 2011

Вероятно self.published_at.nsec не равно self.expired_at.nsec . (нсек возвращает наносекунды). См. Документ для <=> .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...