2014-01-21 56 views
1

我想驗證一個值是唯一的,但僅限於前一週。如何驗證特定時間段內的唯一性

導軌導向給出了下面的例子中添加一個條件:

validates_uniqueness_of :title, conditions: -> { where.not(status: 'archived') } 

我試圖修改它,使它只檢查最後7天:

validates_uniqueness_of :title, conditions: -> { where(created_at: 7.days.ago..DateTime.now) } 

它仍然是檢查所有記錄,而不僅僅是最近7天。

回答

2

的方法之一可能是:

validate :validate_within_a_week 

private 

    def validate_within_a_week 
    if ModelName.exists?(title: self.title, created_at: 7.days.ago..DateTime.now) 
     errors.add(:title, "already exists.") 
    end 
    end 
+0

那偉大的工作。謝謝。 – grabury

+0

我很高興它爲你工作。說謝謝的最好方法就是接受答案。 ;) – Surya

+0

使用'exists?'方法而不是加載大量記錄然後檢查是否已經加載:'ModelName.exists?(title:...,created_at:...)'' 。 – toro2k