Hello everyone
I have a question.
I am using AshArchival.
Let’s say I have a diary and a photo in a 1: N relationship.
I want to record the archived_at of the photo when the diary is deleted.
I wrote the code below but it doesn’t work, can you give me any advice on this?
diary.ex
...
postgres do
table "dental_diaries"
repo Dentallog.Repo
references do
reference :photos, on_delete: :delete, name: "fk_diary_photos"
end
end
...
I thought that if I write it as the code above, it would behave as I thought it would.
1 Like
right, so the references there is configuring the underlying database’s deletion behavior, not Ash’s behavior.
You will want to use the archive_related
option provided by ash_archival
. In your diaries
resource, set
archival do
archive_related :photos
end
A few things to keep in mind:
-
right now, each photo will be archived one at a time. Now that bulk updates are implemented in ash core, we can update that behavior. It is just a matter of time, but at the moment it will be iterative (i.e if there are 1000 photos in a diary, it will be 1000 updates)
-
make sure that your photos resource has a destroy action and that it also uses ash_archival
(otherwise the archive_related
will actually just destroy them)
1 Like
Thank you for your response.
1 Like