是否有任何方式僅在特定形式(控制器的操作)下觸發驗證,而不是在每次保存或更新時全局觸發驗證? 像User.create(:validate=>true)
標誌。僅以特定形式驗證
僅以特定形式驗證
回答
是的,你可以提供條件語句的驗證,如:
validates_presence_of :something, :if => :special?
private
def make_sepcial
@special = true
end
def special?
@special
end
現在,所有你需要做的,打開這些驗證是:
s = SomeModel.new
s.make_special
所以,在保存模型後我必須設置爲false,對吧? – methyl
沒有。 '@ special'只是一個實例變量。除非你有進一步的工作要做,否則你可以讓它死亡,它不會被持續到進一步的數據庫查詢。 – thomasfedb
正如你在評論中解釋說,你想跳過對新記錄的驗證。在這種情況下,你可以使用thomasfedb的答案,但不使用@special
變量,但:
validates_presence_of :something, :if => :persisted?
這隻會驗證爲保存User
S,但是對新User
秒。請參閱persisted?
上的API文檔。
您也可以使用:除非=>:持續?如果你想新的反向驗證,但不保存。 –
這是正確的答案 – doz87
這有點舊了。但我發現http://apidock.com/rails/Object/with_options是處理這種行爲的好方法。
- 1. 春季開機僅使用@valid形式驗證特定屬性
- 2. 以刪除形式驗證
- 3. 形式驗證
- 4. 驗證特殊形式的IP地址
- 5. jQuery驗證插件僅驗證特定的表單域
- 6. javascript形式驗證
- 7. 在驗證形式
- 8. 以Django形式進行字段驗證
- 9. 以彈簧形式驗證包裝
- 10. 以動態形式驗證Laravel 5.5
- 11. 以MVC形式驗證複選框
- 12. 反應形式的自定義驗證
- 13. 自定義身份驗證以形成身份驗證
- 14. 角2自定義驗證(模板形式)驗證
- 15. 驗證JSON爲特定格式
- 16. 以角度形式設置自定義輸入驗證
- 17. 如何僅使用特定驗證集來驗證CakePHP中的數據?
- 18. 驗證形式與JavaScript
- 19. MVC驗證多種形式
- 20. PHP的形式isset驗證
- 21. JS模糊驗證形式
- 22. 角形式沒有驗證
- 23. JavaScript雙重形式驗證
- 24. Zend的形式驗證
- 25. 角-CLI形式驗證
- 26. Angular2反應形式驗證
- 27. 自旋 - 形式化驗證
- 28. 驗證兩種形式
- 29. angularjs驗證的形式
- 30. Angular2 - 觸發形式驗證
你爲什麼要這麼做?如果我們知道你的問題背後的原因,也許我們可以給出更好的答案。 – rdvdijk
我弄錯了用戶模型,沒有與配置文件分開,當你註冊時,你只需要提供幾個字段,剩下的就是從編輯用戶操作中填寫。 – methyl
順便說一句,你可以通過所有這樣的驗證:Model.save(false) – emrahbasman