0
我對Ruby相當陌生,所以我希望我錯過了一些明顯的東西。我有一個應用程序,通過驗證使用類似這樣的表單...使用ActiveSupport時Ruby中的條件驗證
module FormValidations
extend ActiveSupport::Concern
included do
validates :field_1, :if => lambda { self.stage == APPLICATION_STAGE[:DATA_ENTRY] }
validates :field_2, :if => lambda { self.stage == APPLICATION_STAGE[:DATA_ENTRY] }
validate :field_sec, :if => lambda { self.stage == APPLICATION_STAGE[:DATA_ENTRY] }
def field_sec
(*some custom stuff*)
end
...等等,它工作正常。
我現在有一種新的表單,它使用相同的模型和數據庫結構,但有點設置爲不同的東西。它也經歷了一個完全不同的驗證過程。我一直在試圖找到一種方法,所以要確認通話條件,像...
included do
validate :form_switch, :if => lambda { self.stage == APPLICATION_STAGE[:DATA_ENTRY] }
def form_switch
#This uses a method I defined in the model to tell which form is active
if is_special_form == true
validates :field_245, :if => lambda { self.stage == APPLICATION_STAGE[:DATA_ENTRY] }
validates :field_432, :if => lambda { self.stage == APPLICATION_STAGE[:DATA_ENTRY] }
else
validates :field_1, :if => lambda { self.stage == APPLICATION_STAGE[:DATA_ENTRY] }
validates :field_2, :if => lambda { self.stage == APPLICATION_STAGE[:DATA_ENTRY] }
end
end
...但「驗證」放置的方法的內部時,拋出一個錯誤。
我還玩弄了兩個單獨的驗證腳本文件,這些文件被包含到我的表單模型中,但是由於該過程是用一個簡單的「.valid?」執行的方法,我不知道如何區分該級別的腳本。
是否有方法使用單個模型在兩個(或多個)驗證集之間切換?
好主意。儘管如此,我可以通過使兩種方法(特殊和特殊)而不是許多來簡化它,因爲內容不依賴於任何特定於字段的內容。我嘗試後會發佈更多內容。 – ThisLanham