delete_all vs destroy_all?

Я ищу лучший способ удаления записей из таблицы. Например, у меня есть пользователь, идентификатор которого находится во многих таблицах. Я хочу удалить этого пользователя и каждую запись, имеющую его идентификатор, во всех таблицах.

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 для всех связанных объектов, но я просто хочу подтвердить правильный подход.

182
задан the Tin Man 14 July 2011 в 13:14
поделиться