多对多关联外键变更集错误
many to many association foreign key changeset error
对于 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 中的设施时。我想得到变更集错误。
谢谢
所以经过一些挖掘我发现我们可以使用 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
会更好。
对于 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 中的设施时。我想得到变更集错误。
谢谢
所以经过一些挖掘我发现我们可以使用 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
会更好。