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