2011-06-01 60 views
0

我正在實施驗證方法,檢查到期日期不在發佈日期之前的模型。我試過這個Ruby日期時間比較問題

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 

但是,我比較兩個日期時間的結果對我來說沒有意義。兩個日期時間thar是同一時間被比較爲假。這裏有一些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

可能重複。你可以試試這個http://stackoverflow.com/questions/4472851/date-time-comparison-in-ruby – 2011-06-01 11:47:19

+0

沒有問題是完全不同的...... – DGM 2011-06-01 12:51:03

回答

2

大概self.published_at.nsec不等於self.expired_at.nsec。 (毫秒返回納秒)。請參閱doc for <=>