ash-project/ash

Many to many and on match destroy in `manage_relationship`

Closed

#859 opened on Jan 30, 2024

 (2 comments) (1 reaction) (0 assignees)Elixir (389 forks)batch import
buggood first issue

Repository metrics

Stars
 (2,412 stars)
PR merge metrics
 (Avg merge 6d 6h) (26 merged PRs in 30d)

Description

I think on_match: :destroy in manage_relationship is incorrect for many_to_many.

Right now it destroys a join resource. Instead it should destroy both a join and a destination like other types of relationships do.

If one wants to destroy only a join resource then they should use :unrelate.

Destroy is implemented correctly for on_missing where :destroy destroys both and :unrelate only join one. (Though there is a mistake in documentation that states that it is possible to pass [:join, :keys] with a long form.) That's the only other case with support for :destroy so it is strange that they are inconsistent.

Contributor guide