Ruby DateTime比较问题

时间:2011-06-01 10:34:02

标签: ruby datetime

我正在为模型实现验证方法,该模型检查过期日期是否在发布日期之前。我试过这个

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 个答案:

答案 0 :(得分:2)

可能 self.published_at.nsec 不等于 self.expired_at.nsec 。 (nsec返回纳秒)。请参阅 doc for <=>