美文网首页
has_many 的 :dependent 选项和 delete

has_many 的 :dependent 选项和 delete

作者: FFCP | 来源:发表于2017-05-07 20:39 被阅读12次

has_many:dependent 选项有两个方面的作用:

1. Controls what happens to the associated objects when their owner is destroyed:

  • :destroy:使被删除对象的所有关联对象也被 destroy。
  • :delete_all:直接从数据库中删除所有的关联记录,因此各种 callbacks 都不会调用。
  • :nullify:直接将数据库中所有的关联记录的对应外键设置为 NULL,同样不会调用 callbacks。
  • restrict_with_exception:删除时若存在任何关联记录,则抛出异常。
  • restrict_with_error:删除时若存在任何关联记录,则向被删除对象的 errors 数组中追加一个 error。

2. :dependent 选项的取值影响 delete / clear 方法的行为:

  • owner.collections.destroy(obj) 方法的行为不受 :dependent 选项的取值的影响,obj 所对应的记录会从数据库中删除。

  • owner.collections.delete(obj)owner.collections.clear() 方法的行为都会受 :dependent 选项的值的影响:

    • :dependent 设为 :destroy 时:deleteclear 都会使得相关的关联对象对 destroy。
    • :dependent 设为 :delete_all 时:deleteclear 会从数据库中直接删除相关的关联记录,不会调用 callbacks。
    • 其他情况:相关的关联对象的外键被设置为 NULL

相关文章

  • has_many 的 :dependent 选项和 delete

    has_many 的 :dependent 选项有两个方面的作用: 1. Controls what happen...

  • rails-模型-一对多

    ONE has_many 可拥有多个对象 dependent: :destroy 级联删除 MORE belong...

  • Git使用记录

    git中部门选项解释 -f --force 强制-d --delete 删除-D --delete --force...

  • dev-tool tips

    来源链接mdnchrome element 右击,出现选项 hidden / delete element 编辑 ...

  • Proxmox pve删除直通设备命令

    qm set 101 -delete ide0 qm命令 set选项 101虚拟机编号 -delete删除命令 i...

  • git 基本命令讲解

    git中一些选项解释-b--branch分支-d--delete删除-f--force强制-D--delete -...

  • delete 和 delete[]

    参考: delete 和 delete []的真正区别 先说结论:如果用ptr代表一个用new申请的内存返回的内存...

  • delete 和 delete []

    每一本 C++ 教材上都会告诉你,使用new,new [],delete 和 delete [] 的时候必须要配对...

  • dependent

    i will never to be fear of loneliness i will make my life...

  • 备忘题目

    list是一个ArrayList的对象,哪个选项的代码填到//todo delete处,可以在Iterator遍历...

网友评论

      本文标题:has_many 的 :dependent 选项和 delete

      本文链接:https://www.haomeiwen.com/subject/hblptxtx.html