So I have a many_to_many relation, it works ok for populating the records, but not for deleting.
I created table with:
create table(:users_permissions, primary_key: false) do
add :user_uuid, :uuid, [references(:users, [column: :uuid, type: :uuid, on_delete: :delete_all])]
add :permission_uuid, :uuid, [references(:permissions, [column: :uuid, type: :uuid, on_delete: :delete_all])]
end
but the relationship in DB is not created on migration.
And permissions schema is:
schema "permissions" do
field :uuid, :binary_id
field :code, :string
field :description, :string
many_to_many(:users,
User,
[join_through: UserPermission,
join_keys: [user_uuid: :uuid, permission_uuid: :uuid],
on_replace: :delete,
on_delete: :delete_all
])
end
Ecto goes with when I try to delete permission entry:
DELETE FROM "users_permissions" AS u0 WHERE (u0."user_uuid" = $1::uuid)
but it should go with
DELETE FROM "users_permissions" AS u0 WHERE (u0."permission_uuid" = $1::uuid)