多对多关联外键变更集错误

问题描述 投票:0回答:1

对于has_*,我们有no_assoc_constraint。当我们尝试删除父级并且子级仍然存在时,它工作正常并抛出变更集错误。是否有任何功能适用于many to many

就像这三种模式一样

   schema "facilities" do         
    field(:name, :string)
    field(:description, :string)
    field(:is_active, :boolean, default: true)


    many_to_many(:users, User, join_through: "users_facilities")
  end

   schema "users_facilities" do
    belongs_to(:user, User, primary_key: true)
    belongs_to(:facility, Facility, primary_key: true)
   end

   schema "users" do
    field(:first_name, :string)
    field(:last_name, :string)
    field(:email_address, :string)
    field(:username, :string)
    many_to_many(:facilities, Facility, join_through: 
   "users_facilities")

我什么时候尝试删除user_facilities中存在外键的工具。我想得到变更集错误。

谢谢

elixir ecto
1个回答
0
投票

所以经过一些挖掘,我发现我们可以使用foreign_key_constraint为任何类型的关联生成变更集错误,方法是提供这样的外键名称

    record
       |> Ecto.Changeset.change()
       |> Ecto.Changeset.foreign_key_constraint(:users, name: :users_facilities_facility_id_fkey,
         message: "are still associated with id}"
        )

它有效,但我认为如果我们不必每次都明确指定name: foreign_key_name会更好。

© www.soinside.com 2019 - 2024. All rights reserved.