У меня есть 2 таблицы:
Пользователь:
id
username
password
unique_index username
(the schema has a has_many other)
другой:
id
user_id - references(:users)
foo
index user_id
(the schema has a belongs_to user)
в наборе изменений для "Другое" у меня есть этот
model
|> cast(params, @req, @opt)
|> foreign_key_constraint(:user_id)
Мое предположение в этот момент было "Другой" ecto-моделью требует, чтобы "Пользователь" был связан с ним, чтобы существовать (это то, что я хочу)
Но мое второе предположение заключалось в том, что если я удалю запись "Пользователь", все связанные с ней записи "Другие" будут удалены (с помощью Cascade delete)
Что на самом деле происходит, у меня есть Ecto.ConstraintError при попытке удалить запись "Пользователь" (я предполагаю, потому что есть "Другая" запись, связанная с этим пользователем)
Итак, как бы я начал работать так, как хочу:
- "Пользователь" может быть создан автономно
- "Другой" может быть создан, но должен принадлежать "пользователю"
- Когда удаляется "другое", это ничего не влияет на
- Когда "пользователь" удален, он также удаляет все связанные с ним "другие" записи
По существу Cascade Delete для пользователя для любых элементов, которые ссылаются на него