在 Rails 指南中,它是这样描述的:
如果对象与 相关联,则对象将被另外销毁:dependent => :destroy,如果与:dependent => :delete_all
:dependent => :destroy
:dependent => :delete_all
没错,酷。但是被销毁和被删除有什么区别呢?我都试过了,它似乎做同样的事情。
不同之处在于回调。
:delete_all直接在您的应用程序中创建并通过 SQL 删除:
:delete_all
DELETE * FROM users where compagny_id = XXXX
使用:destroy,您的所有孩子都有一个实例化。所以,如果你不能销毁它或者如果每个都有自己的:dependent,它的回调可以被调用。
:destroy
:dependent