0
A
回答
1
它們是等價的。 on: :create
只是一個DSL版本,然後最終轉換(在後臺)到if: :new_record
。
,用於驗證(參見驗證/ validates.rb#L123)引導我們,導致我們validate
(參見validations.rb#validates_with
(參見驗證/ with.rb#L92) L162),在這裏我們可以看到on
成爲if
:
if options.key?(:on)
options = options.dup
options[:if] = Array(options[:if])
options[:if].unshift ->(o) {
!(Array(options[:on]) & Array(o.validation_context)).empty?
}
end
這導致我們到default_validation_context這相當於if: :new_record?
def default_validation_context
new_record? ? :create : :update
end
+1
對不起,這是我第一次在這裏回答 - 如果它很複雜,讓我知道,我會盡量讓它更清晰。此外,我無法添加超過2個鏈接,但如果您轉到鏈接源代碼,只需導航到我提到的文件,以便找到我提到的代碼。 – lastgabs
相關問題
- 1. Rails的條件驗證工作不
- 2. Rails state_machine - 條件驗證?
- 3. 有條件的密碼驗證Rails中
- 4. Rails 3中友誼的驗證條件?
- 5. 不同頁面上的條件驗證 - Rails
- 6. Rails 3驗證條件的唯一性
- 7. 有條件的驗證RAILS模型
- 8. Rails的多個條件驗證
- 9. Rails - 如何有條件啓用驗證?
- 10. 評估Rails 4條件驗證
- 11. Rails驗證條件重定向
- 12. Rails模型驗證條件allow_nil?
- 13. Rails表單驗證條件旁路
- 14. jquery中的條件驗證
- 15. AngularJS中的條件驗證
- 16. ActiveRecord中的條件驗證
- 17. Struts2中的條件驗證
- 18. MVC中的條件驗證
- 19. Laravel中的條件驗證
- 20. PDF中的條件驗證
- 21. MVC3中的條件驗證
- 22. Rails驗證,如果條件和行動在同一時間
- 23. 條件驗證
- 24. 條件驗證
- 25. 條件驗證
- 26. 的Rails 3.1:「在那裏」有多個條件,「不是零」驗證
- 27. jQuery驗證插件:相同的形式,不同的驗證submitHandler
- 28. JQuery驗證器插件驗證條件
- 29. 驗證Rails中
- 30. JPA中的不同驗證
只是出於好奇,你爲什麼問,你有沒有注意到他們似乎不一樣的情況? – Iceman
是的,我想知道同樣的事情。你的意思是說他們在實際操作中是否相同,或者他們是否按照相同(或幾乎相同)的代碼路徑行事? –