Elixir 长生不老药删除多对多关联

Elixir 长生不老药删除多对多关联,elixir,phoenix-framework,Elixir,Phoenix Framework,我有两个模型:用户和组。它们通过联接表进行多对多关联。 当我尝试删除用户(或组)时,会引发以下错误: **(Exto.ConstraintError)尝试删除模型时出现约束错误: * foreign_key: groups_user_id_key 我应该如何删除任何父模型 has_many :groups, MyApp.User, on_delete: :nilify_all :关于删除选项 删除父项时,可以为关联设置四种不同的行为: :nothing-对协会不做任何事情 :delete_a

我有两个模型:用户和组。它们通过联接表进行多对多关联。 当我尝试删除用户(或组)时,会引发以下错误:

**(Exto.ConstraintError)尝试删除模型时出现约束错误:

* foreign_key: groups_user_id_key
我应该如何删除任何父模型

has_many :groups, MyApp.User, on_delete: :nilify_all
:关于删除
选项

删除父项时,可以为关联设置四种不同的行为:

:nothing-对协会不做任何事情

:delete_all-删除所有关联而不触发生命周期回调

:nilify_all-为每个关联将模型引用设置为nil,而不触发任何生命周期回调

:fetch_和_delete-显式获取所有关联并逐个删除,触发任何在_delete之前和之后的回调; 请记住,这些选项仅适用于多个/3宏


数据库将引发这样的错误,因为联接表仍然包含对您试图删除的用户/组的引用。 对于这些问题,有多种解决方案:

  • 手动删除用户/组之前,可以删除所有联接表项
  • 您可以为组/用户架构中的联接模型关联设置
    on_delete::delete_all
    选项
  • 您可以通过使用
    引用(表,ON_DELETE::DELETE_all)
    在外键约束定义中进行迁移,在数据库中设置
    ON DELETE CASCADE
    选项
您可以在以下EXTO文档中找到更多信息: