2013-05-04 37 views
0

我有一個Rails應用程序通過REST接口從另一個應用程序接收新的工作訂單。用戶也可以通過表單輸入新的工作單。Rails有條件地驗證字段,如果創建的形式而不是REST

如果通過新的形式創建的新工作單,我想驗證用戶已經從一個複選框(選擇列表),用於監督所選擇的值。

我不想驗證,如果用戶更新工單或使用REST接口創建工單。

這工作,所以,它的驗證創建過程中,而不是更新:

validate_presence_of :supervisor, :on => :create 

但是,我怎麼會做出通過REST創建記錄時,它無法驗證?

感謝您的幫助!

+1

爲什麼你跳過REST接口驗證? – Chris 2013-05-04 01:38:20

+0

因爲工作訂單來自我們正在與之集成的應用程序,但不是由用戶進入新的工作訂單而確定。商業規則。 – Reddirt 2013-05-04 03:48:52

回答

0

型號

attr_accessor :rest 

validates_presence_of :supervisor, :on => :create, :if => lambda{ |model| model.rest } 

控制器

... 
respond_to do |format| 
    format.json do 
    model.rest = true 
    ... 
    end 
end 
+0

感謝您的幫助!但是,我正在使用RABL爲工作訂單創建JSON。所以,工單控制器中沒有'format.json'。我將如何設置'model.rest = true'? – Reddirt 2013-05-04 03:52:12

+0

您可以使用request.format,但我認爲您不應該依賴格式來知道何時響應或不響應。我想你會爲你的訂單創建者應用程序提供認證,即應用程序ID和應用程序祕密。 – juanpastas 2013-05-04 11:53:14

+0

您可以使用保存應用程序標識和祕密的新模型來處理身份驗證,即使只有一個應用程序,也最好與模型一起使用,因爲它可以讓您在將來進行擴展。 – juanpastas 2013-05-04 11:55:24

相關問題