Вопреки предоставленному ответу я настоятельно рекомендую сделать это на уровне базы данных. В случае, если у вас разные процессы или многопоточная среда, может случиться, что записи не будут удалены должным образом. Кроме того, внешний ключ базы данных ускоряет процесс удаления большого количества данных.
Как и в предложенном ответе сделать это:
has_many :memberships, dependent: :delete_all
Однако также убедитесь, что в миграции настроено foreign_key
. Таким образом, база данных позаботится об автоматическом удалении записей для вас.
Чтобы обнулить значения при удалении членства, при условии, что у вас есть модель пользователя:
add_foreign_key :users, :memberships, on_delete: :nullify
Вы также можете удалить все модели при удалении членства
add_foreign_key :users, :memberships, on_delete: :cascade