似乎在rails中你可以在两个地方定义关联验证,或者在关联本身上:
class Child
belongs_to :parent, :validate => true
end
Run Code Online (Sandbox Code Playgroud)
或者作为验证回调:
class Child
belongs_to :parent
validates_associated :parent
end
Run Code Online (Sandbox Code Playgroud)
这两种方法有什么区别?
测试差异
我想也许前者会创建一个背压,并强制父母只有在孩子有效的情况下才有效:
即(设置时:validate => true)
child.valid? # => false
child.parent.valid? # => also evaluates to false because of the :validate => true condition
# do whatever it takes to make the child valid again
#...
child.valid? # => true
child.parent.valid? # => true
Run Code Online (Sandbox Code Playgroud)
但是我测试了它,但这不会发生.那两种方法之间有什么区别(如果有的话)?