У меня 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.ConstraintError при попытке удалить запись «Пользователь» (я предполагаю, потому что с этим пользователем связана запись «Другой»)
Итак, как бы мне заставить его работать так, как я хочу:
- "Пользователь" может быть создан автономно
- «Другой» может быть создан, но он должен принадлежать «пользователю»
- Удаление «другого» не влияет ни на что другое.
- Когда "пользователь" удаляется, он также удаляет все связанные "другие" записи.
По сути, каскадное удаление для пользователя любых элементов, которые на него ссылаются.