dependent: :destroy VS dependent: :delete_all
Additionally, objects will be destroyed if they're associated with dependent: :destroy, and deleted if they're associated with dependent: :delete_all. |
:dependent
选项控制属主销毁后怎么处理关联的对象:
:destroy
:也销毁关联的对象:delete_all
:直接从数据库中删除关联的对象(不执行回调):nullify
:把外键设为NULL
(不执行回调):restrict_with_exception
:如果有关联的记录,抛出异常:restrict_with_error
:如果有关联的对象,为属主添加一个错误
从字面意思上看很简单,就是一个销毁一个删除嘛
详细一点的说的话,那就是delete
只会从db中删除当前对象记录,而不会从db中删除其相关的子记录。
destroy
将从db中删除当前对象记录,并从db中删除其相关的子记录