Возможно, вы захотите :nullify
. См. Документы Rails для has_many
.
:dependent
контролирует, что происходит с связанными объектами, когда их владелец уничтожен. Обратите внимание, что они реализованы как обратные вызовы, а Rails выполняет обратные вызовы по порядку. Следовательно, другие подобные обратные вызовы могут влиять на зависимое поведение: зависимое поведение может влиять на другие обратные вызовы.
:destroy
вызывает уничтожение всех связанных объектов.
:delete_all
вызывает удаление всех связанных объектов непосредственно из базы данных (поэтому обратные вызовы не будут выполнены).
:nullify
приводит к тому, что внешние ключи устанавливаются в NULL. Обратные вызовы не выполняются.
:restrict_with_exception
вызывает исключение, если есть связанные записи.
:restrict_with_error
вызывает ошибку при добавлении владельца, если есть связанные объекты.
При использовании с опцией :through
ассоциация на модели объединения должна быть belongs_to
, а записи, которые удаляются, - это записи объединений, а не связанные записи.