2014-01-21 83 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