오래되고 분산된 주제 일괄 삭제

안녕하세요,

저희 포럼에는 삭제하고 싶은 오래되고 더 이상 사용되지 않는 주제(토픽)가 수천 개 있습니다. 메타에서 적절한 해결 방법을 검색해 보았지만, 적합한 솔루션을 찾지 못했습니다.

주제 ID 목록을 반복하면서 삭제하고자 하는 각 주제의 deleted_at 플래그만 설정하면 충분할까요, 아니면 더 나은 방법이 있을까요? 꽤 게으른 해결책이라는 것은 알고 있습니다.

대량 삭제를 위해 Topic.destroy를 활용하는 별도의 (작은) 플러그인을 작성하는 것은 다소 과한 부담이라고 생각합니다.

감사합니다.
Sascha

P.S.
배경: 이러한 주제들이 크롤링 문제와 soft404를 유발하고 있어 검색 엔진에서 숨기고 싶습니다. 삭제된 주제는 사이트맵에서 제외됩니다.

아마도 목록에서 제외하는 것만 원하시는 건가요? 그러면 인덱싱이 방지될 것입니다.

한 번만 실행하시길 원하시나요, 아니면 정기적으로 실행하시길 원하시나요?

안녕하세요,

네, 해당 항목을 목록에서 제외하고 인덱싱되지 않도록 막고 싶습니다.
이 작업은 한 번만 수행할 예정이며, 크롤링 문제를 일으키는 향후 “잘못된” 주제/게시물은 수동으로 조정할 수 있기 때문입니다.

저희 포럼은 매우 오래된 포럼(1996년 시작)으로, 여러 번 마이그레이션을 거치면서 원시 텍스트 등에 이상하거나 구식 구문이 남아 있는 상태입니다. 2015년 이전의 것으로, 조회수가 1,000회 미만이며 Google 검색 콘솔에서 “잘못된” 항목으로 표시되는 모든 주제를 수집했습니다.

저희 입장에서는 이러한 주제들이 단순히 삭제된 것으로 표시되어도 괜찮지만, deleted_at을 직접 설정하는 것이 좋은 방법인지, 아니면 주의해야 할 종속성이 있는지 확실하지 않았습니다. 따라서 프로그래밍 방식으로 진행해야 하는지 여부에 대해 조언을 구합니다.

삭제하려는 것이라면, topic.delete를 호출하는 것이 맞을 것 같습니다. 종속성이 있다면 그 부분도 함께 처리해 줍니다.

자문을 감사드립니다! 해당 주제들을 완전히 삭제하기로 결정하는 경우, SQL 쿼리를 통해 deleted_at과 visible=false를 설정하겠습니다. 이 주제들은 30일 후 sidekiq 작업에 의해 삭제됩니다.
하지만 이 주제들을 유지해야 한다면, topic.delete를 사용하는 작은 ruby 스니펫으로 "삭제"하는 방식으로 제안해 주신 대로 진행하겠습니다.
따라서 두 경우 모두 결국 discourse 자체가 이 주제들을 처리하게 되며, 이는 가능한 의존성 문제를 관리하게 될 것입니다.

감사합니다!