我正在为模型实现验证方法,该模型检查过期日期是否在发布日期之前。我试过这个
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>
任何人都可以告诉我这些比较是如何运作的?
干杯!
答案 0 :(得分:2)
可能 self.published_at.nsec 不等于 self.expired_at.nsec 。 (nsec返回纳秒)。请参阅 doc for <=> 。