У меня есть 3 модели:
user.ex
schema "users" do
...
many_to_many(:acts, Act, join_through: UserAct)
end
act.ex
schema "acts" do
...
many_to_many(:users, User, join_through: UserAct)
end
user_act.ex
schema "users_acts" do
belongs_to :user, User
belongs_to :act, Act
end
Каждый раз, когда я удаляю UserAct
, я хочу проверить, есть ли потерянные модели Act
, и удалить их в транзакции.
В SQL это выглядит так
DELETE FROM acts WHERE NOT EXISTS (
SELECT 1 FROM users_acts ua WHERE ua.act_id = acts.id
);
or
DELETE FROM acts WHERE id NOT IN (SELECT act_id FROM users_acts);
У меня вопрос, как написать аналогичный запрос с Ecto?
Пожалуйста, покажите все методы, которые вы знаете: объединения, фрагменты и т. Д. *