我正在为一个模型实现一种验证方法,该方法检查过期日期是否在发布日期之前。我试过这个
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被比作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>
有人能启发我这些比较是如何运作的吗?
干杯!
可能self.published_at.nsec不等于elf.expired_at.nsec。(nsec返回纳秒)。请参阅<=>文档。