elixir删除多对多关联

use*_*621 4 elixir phoenix-framework

我有两个模型:用户和组.它们是通过连接表关联的多对多.当我尝试删除用户(或组)时,它会引发此错误:

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

* foreign_key: groups_user_id_key
Run Code Online (Sandbox Code Playgroud)

如何删除任何父模型?

mic*_*ala 10

数据库将引发此类错误,因为连接表仍保留对您尝试删除的用户/组的引用.这个问题有多种解决方案:

  • 您可以在手动删除用户/组之前删除所有连接表条目
  • 您可以on_delete: :delete_all在组/用户架构中为联接模型关联设置选项
  • 您可以ON DELETE CASCADE通过外键约束定义中的迁移来设置数据库中的选项references(table, on_delete: :delete_all).

你可以找出外生文档中详细了解此位置:http://hexdocs.pm/ecto/Ecto.Schema.html#has_many/3这里:http://hexdocs.pm/ecto/Ecto.Migration.html #引用/ 2