Я шукаю найкращий підхід для видалення записів із таблиці. Наприклад, у мене є користувач, чий ідентифікатор користувача знаходиться в багатьох таблицях. Я хочу видалити цього користувача та кожну запис, який має його ідентифікатор у всіх таблицях.
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
створюють усі записи та знищують їх по черзі, тому при дуже великому наборі даних це може бути болісно повільним.