2017-05-26 30 views
1

我有一個Rails應用程序,其中活動是具有以下屬性的資源之一:如何在rails中執行模型驗證?

  • 狀態(「進行中」記錄活動的狀態,「完全」)
  • 開始(年月日時活動啓動)時,活動結束
  • 結束(日期)

我想「進行中」創建用於身份活動的新紀錄,因爲沒有與同一統計沒有現有活動我們。我相信這可以通過使用模型驗證來完成,但是對於rails而言,我不知道如何實現。

+0

你使用'status'屬性'enum'? –

+0

我現在使用的是'string',但'enum'會更有意義 –

回答

1

如果statusenum你可以這樣做:

class Activity < ApplicationRecord 
    enum status: [ :in_progress, :complete ] 

    validates_uniqueness_of :status, if: :in_progress? 
end 

此驗證限制你只有一個activityin_progress狀態。

此外,如果status是一個字符串,你可以這樣做:

class Activity < ApplicationRecord 
    validates_uniqueness_of :status, if: proc { |activity| activity.status == 'in_progress' } 
end