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 3中友谊的验证条件?
- 2. 有条件的密码验证Rails中
- 3. Rails 3验证条件的唯一性
- 4. 有条件的验证RAILS模型
- 5. Rails的多个条件验证
- 6. Rails表单验证条件旁路
- 7. Rails模型验证条件allow_nil?
- 8. Rails - 如何有条件启用验证?
- 9. Rails验证条件重定向
- 10. ActiveRecord中的条件验证
- 11. Struts2中的条件验证
- 12. MVC3中的条件验证
- 13. jquery中的条件验证
- 14. Laravel中的条件验证
- 15. PDF中的条件验证
- 16. 条件验证
- 17. 条件验证
- 18. 条件验证
- 19. 的Rails 3.1:“在那里”有多个条件,“不是零”验证
- 20. JPA中的不同验证
- 21. 在Rails中验证有条件显示的字段
- 22. 在Rails 3中进行必要的条件验证
- 23. 条件Jquery验证
- 24. 有条件验证
- 25. Symfony2条件验证
- 26. Rails验证接受不验证
- 27. Rails的验证,不记录
- 28. ember-cp验证条件验证程序
- 29. 条件验证使用jquery验证
- 30. 在不同的条件块/验证器中使用重复的asp.net控件ID
只是出于好奇,你为什么问,你有没有注意到他们似乎不一样的情况? – Iceman
是的,我想知道同样的事情。你的意思是说他们在实际操作中是否相同,或者他们是否按照相同(或几乎相同)的代码路径行事? –