我想在此记录created_at
之前的3个月内检查记录属性的唯一性,如:
validates :number, uniqueness: { conditions: -> { where('created_at > ?', Time.now - 3.months)}}
但我不是Time.now
而是使用经过验证的记录created_at
值。
我该怎么做?
答案 0 :(得分:0)
你所写的内容应该已经有效,如果你需要相反的话,那就预期了。
你可以稍微重构一下,创建一个scope
来定义3个月内创建的所有项目。
scope :created_within_three_month, -> { where('created_at <= ?', 3.months.ago) }
然后你的validates
写得很好。
validates :number, uniqueness: true, conditions: :created_within_three_month
注意:但如果我是你,我会在你的模型上创建state
,然后编写一个rake任务,将archived
所有3岁以上的记录放在上面个月。
然后我将验证:
validates :number, uniqueness: true, conditions: -> { where.not(state: 'archived') }