2017-06-29 75 views
1

我要檢查的唯一記錄這個紀錄created_at之前只有屬性爲3個月,類似記錄的屬性值:使用的唯一性驗證條件

validates :number, uniqueness: { conditions: -> { where('created_at > ?', Time.now - 3.months)}} 

但不是Time.now我想使用驗證記錄值爲created_at

我該怎麼做?

回答

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,然後寫穿上archived超過3個月以上的所有記錄rake任務。

然後我會在驗證:

validates :number, uniqueness: true, conditions: -> { where.not(state: 'archived') }