Я ищу лучший подход для удаления записей из таблицы. Например, у меня есть пользователь, чей идентификатор во многих таблицах. Я хочу удалить этого пользователя и каждую запись, которая имеет его идентификатор во всех таблицах.
u = User.find_by_name('JohnBoy')
u.usage_indexes.destroy_all
u.sources.destroy_all
u.user_stats.destroy_all
u.delete
Это работает и удаляет все ссылки пользователя из всех таблиц, но я слышал, что это destroy_allбыло очень тяжело, поэтому я попытался delete_all. Он только удаляет пользователя из его собственной пользовательской таблицы, а idвсе остальные таблицы обнуляются, но оставляют записи в них нетронутыми. Может кто-нибудь поделиться тем, что правильный процесс для выполнения такой задачи?
Я вижу, что destroy_allвызывает destroyфункцию на всех связанных объектах, но я просто хочу подтвердить правильный подход.
delete_all, и 2)destroy_allсоздает все записи и уничтожает их по одной за раз, поэтому при очень большом наборе данных это может быть мучительно медленным.