Estou procurando a melhor abordagem para excluir registros de uma tabela. Por exemplo, eu tenho um usuário cujo ID do usuário está em várias tabelas. Quero excluir este usuário e todos os registros que tenham seu ID em todas as tabelas.
u = User.find_by_name('JohnBoy')
u.usage_indexes.destroy_all
u.sources.destroy_all
u.user_stats.destroy_all
u.delete
Isso funciona e remove todas as referências do usuário de todas as tabelas, mas ouvi dizer que o destroy_all
processo era muito pesado, então tentei delete_all
. Ele remove apenas o usuário de sua própria tabela de usuários e as id
de todas as outras tabelas são tornadas nulas, mas deixa os registros intactos nelas. Alguém pode compartilhar qual é o processo correto para executar uma tarefa como esta?
Vejo que destroy_all
chama a destroy
função em todos os objetos associados, mas só quero confirmar a abordagem correta.
delete_all
e 2)destroy_all
instancia todos os registros e os destrói um de cada vez; portanto, com um conjunto de dados muito grande, isso pode ser dolorosamente lento.