如何验证特定时间段的唯一性

时间:2014-01-21 08:15:05

标签: ruby-on-rails ruby

我想验证某个值是唯一的,但仅限于前一周。

rails guide提供了以下示例来添加条件:

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

我尝试修改它,以便它只检查过去7天:

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

它仍在检查所有记录,而不仅仅是过去7天。

1 个答案:

答案 0 :(得分: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