gpt4 book ai didi

schema - nilify_all、nothing 和 delete_all 之间的 Ecto.Schema 差异?

转载 作者:行者123 更新时间:2023-12-04 12:06:29 24 4
gpt4 key购买 nike

我正在为我的 user 定义模式和 role Phoenix应用程序中的模型。角色has_many用户和用户 belongs_to一名角色。似乎有 3 种不同的 on_delete:选项:nilify_all , nothing (默认)和 delete_all .

当我看 Ecto.Schema页面,我真的没有找到每个人做什么的定义。
nilify_all有什么区别, nothing , 和 delete_all - 我应该什么时候使用?

最佳答案

on_delete选项指定删除记录时关联记录应发生的情况。

考虑您的示例,其中 role有很多users :

  • delete_all :删除父记录时删除关联的记录。例如在您的情况下删除 role将删除所有 users与该角色相关联的。
  • nilify_all :这将关联表中指向父记录的键设置为 nil当父记录被删除时。例如,当一个角色被删除时,这将设置 role_idusers表到nil属于该角色的用户。
  • nothing :当删除父记录时,这不会对关联的记录做任何事情。但是,如果关联表具有返回父表的外键约束,这将引发错误。
  • 关于schema - nilify_all、nothing 和 delete_all 之间的 Ecto.Schema 差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53092817/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com