1
我要檢查的唯一記錄這個紀錄created_at
之前只有屬性爲3個月,類似記錄的屬性值:使用的唯一性驗證條件
validates :number, uniqueness: { conditions: -> { where('created_at > ?', Time.now - 3.months)}}
但不是Time.now
我想使用驗證記錄值爲created_at
。
我該怎麼做?
我要檢查的唯一記錄這個紀錄created_at
之前只有屬性爲3個月,類似記錄的屬性值:使用的唯一性驗證條件
validates :number, uniqueness: { conditions: -> { where('created_at > ?', Time.now - 3.months)}}
但不是Time.now
我想使用驗證記錄值爲created_at
。
我該怎麼做?
你寫的東西應該已經有效了,如果你需要相反的話。
雖然可以重構一下,但是可以創建一個scope
來定義3個月內創建的所有項目。
scope :created_within_three_month, -> { where('created_at <= ?', 3.months.ago) }
然後你validates
寫得很好。
validates :number, uniqueness: true, conditions: :created_within_three_month
注意:但是如果我是你,我會創建您模型state
,然後寫穿上archived
超過3個月以上的所有記錄rake任務。
然後我會在驗證:
validates :number, uniqueness: true, conditions: -> { where.not(state: 'archived') }