Как стать автором
Обновить

Комментарии 4

А если мы сменим Draft на новый, у старого Draft останется связь с TechProcess или удалится?
Сори за долгий ответ)
Да связь удалится. has_one по умолчанию удаляет старую связь когда её заменяешь на новую
Спасибо — да действительно при замене потомка просто обновляет запись промежуточной таблицы.

Как я помню коварство has_one в том, что он не гарантирует что потомок будет только один. Из нескольких выбирает через SELECT LIMIT 1 и при таком обновлении наверно будут неприятные штуки.
Да, эта связь действительно не гарантирует что потомок будет один.
Но например какой-нибудь update has_one post.update(author: some_author) удалит старую связь.

Гарантировать уникальность можно другими способами, например добавить уникальный индекс в связующей таблице.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории