관리용 일괄 작업에서 이어서 진행 중인 논의입니다:
특정 기간이 지난 속삭임(whisper)을 모든 주제에서 삭제하는 방법을 찾고 있습니다.
일반적으로 우리는 잠재적인 관리자 조치를 논의하기 위해 속삭임을 사용하지만, 조치가 완료된 후에는 속삭임의 유용성이 떨어지고 시간이 지날수록 노이즈가 되기 쉽습니다.
post_type=4(whisper)로 특정 기간이 지난 게시물을 삭제할 수는 있지만, 이렇게 하면 데이터베이스에 불일치나 부수적인 문제가 발생할 수 있거나 포럼 키로 인해 허용되지 않을 수 있습니다.
이를 안전하게 수행할 수 있는 방법이 있을까요?
tshenry
(Taylor)
2
게시글을 삭제하는 가장 깔끔한 방법은 다음과 같습니다:
whispers = Post.where(post_type: 4).where("created_at < ?", 1.year.ago)
whispers.find_each do |w|
PostDestroyer.new(Discourse.system_user, w, skip_staff_log: true).destroy
putc "."
end
이 코드는 System 사용자가 각 게시글의 삭제 버튼을 통해 수동으로 삭제한 것과 동일한 효과를 냅니다. 스태프 로그가 오염되지 않도록 skip_staff_log를 포함했지만, 해당 작업을 로그에 남기고 싶다면 이 부분을 제거할 수 있습니다.
이 방식이 요구사항을 충족할까요?
완벽해 보여요 - 감사합니다!
테스트 인스턴스에서 한번 시도해 보고, 시간이 얼마나 걸리는지 확인해 볼게요. 아마도 수천 개의 위스퍼가 있을 것 같으니까요!!!
이 작업은 잘 작동하고 있습니다. 감사합니다… 하지만 속삭임(whispers)은 단순히 접혀 있을 뿐이며, 확장하면 관리자나 모더레이터가 여전히 볼 수 있습니다.
이것은 주제(topic)를 깔끔하게 정리해 주지만, 완전히 제거되기를 바랐습니다. 모든 속삭임을 새 주제로 이동한 후, 적어도 모더레이터로부터 삭제하거나 숨길 수 있을지 궁금했습니다. 그러다 다음을 발견했습니다: Is there a way to remove all the deleted/hidden posts? 그리고 최근에는: Why is it not possible to permanently delete topics or posts?
불행히도 위의 글들은 데이터를 영구적으로 제거할 방법이 없다고 시사하고 있습니다 