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中删除其相关的子记录