테이블에서 레코드를 삭제하는 가장 좋은 방법을 찾고 있습니다. 예를 들어, 사용자 ID가 많은 테이블에있는 사용자가 있습니다. 이 사용자와 모든 테이블에 ID가있는 모든 레코드를 삭제하고 싶습니다.
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
다른 모든 테이블에서 사용자를 null로 만들지 만 레코드는 그대로 둡니다. 누군가 이와 같은 작업을 수행하기위한 올바른 프로세스를 공유 할 수 있습니까?
모든 관련 개체 destroy_all
에서 destroy
함수 를 호출하는 것을 보았지만 올바른 접근 방식을 확인하고 싶습니다.
delete_all
2)destroy_all
모든 레코드를 인스턴스화하고 한 번에 하나씩 삭제하므로 매우 큰 데이터 세트의 경우 고통스럽게 느려질 수 있습니다.