我想验证某个值是唯一的,但仅限于前一周。
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天。
答案 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