한 사용자가 자신의 모든 게시물을 삭제했는데, 그 중 하나가 특정 카테고리의 “소개” 게시물이었습니다. 해당 게시물을 복원하고 소유권을 시스템 계정으로 변경했지만, 관리자 계정으로 접속하면 여전히 "삭제됨"으로 표시되고, 일반 사용자가 해당 게시물을 방문하면 오류가 발생합니다:
새 카테고리를 만들고 기존 카테고리와 교체하는 방법을 고려할 수 있지만, 그렇게 하면 기존 카테고리에 구독/음소거/기타 설정을 해둔 사용자들도 새 카테고리에서 다시 설정해야 하는 건가요?
Rails 콘솔에는 두려움이 없으므로, 새로운 topic_id를 할당하는 것이 구조적으로 더 ‘올바른’ 방식이라면 그쪽으로 기울고 있습니다. 다만 실행할 구체적인 명령어에 대한 안내가 있으면 좋겠습니다. Category.find(10).topic_id = 723 …과 같은 형태인가요?
한편으로는:
…이것이 더 빠른 해결책일까요? (다만 렌치 아이콘 메뉴에서 "Archive Topic"만 보이고 "Delete Topic"는 보이지 않는데…)
여기 다른 분들만큼 이 문제를 철저히 테스트해 보지는 않았습니다(감사합니다!!) 하지만 첫 번째 게시물에서 언급된 문제의 해결책은 꽤 단순해 보입니다.
사이트 관리자/운영자(모더레이터)가 사용자 관리(User Admin)에서 소개 주제(About topics)를 삭제하는 것을 허용하지 말 것
위와 같은 시도가 이루어질 경우 이를 차단하고 유용한 오류 메시지를 표시해야 합니다. 위에서 언급한 경우 소개 주제를 삭제할 수 있다는 것은 버그이므로, 해당 문제를 Contribute > Bug 카테고리로 이동시키고 있습니다.
방금 테스트 사용자를 생성하고, 그 계정으로 카테고리를 만든 후 사용자 관리에서 해당 사용자를 삭제해 보았습니다. 사용자가 주제(topic)를 가지고 있음에도 불구하고 사용자 관리에서 직접 사용자를 삭제할 수 있었습니다. 소개 주제의 작성자는 시스템 사용자(System user)로 변경되었습니다! 따라서 이 사용 사례는 적어도 이 측면에서는 꽤 안전한 것 같습니다.
또한 자기 삭제(self deletion) 사례도 시도해 보았습니다(계정 삭제 버튼을 보려면 먼저 사용자를 강등시켜야 합니다). 이 사용자를 삭제해도 주제 작성자는 시스템으로 넘어갔습니다. 또한 delete user self max post count의 기본값이 1로 설정되어 있다는 것을 확인했습니다. 이는 기본적으로 사용자가 주제 하나 이상을 가지고 있을 경우 스스로를 삭제할 수 없음을 의미합니다. 따라서 여기서는 어쨌든 안전합니다.
그리고 사용자 관리를 통한 사용자 삭제도 테스트해 보았습니다. 흥미롭게도, 소개 주제 하나만 있을 때는 게시물 삭제 버튼이 나타나지 않았습니다. 하지만 두 번째 주제를 생성한 후에는 게시물 삭제 버튼이 나타났습니다. 버튼을 선택하고 확인을 위해 긴 텍스트를 입력한 후 작동했습니다 - 소개 주제를 포함하여 사용자의 게시물을 삭제할 수 있었습니다. 드디어 재현(repro)에 성공했습니다!
마지막으로, 일괄 작업(bulk actions)을 사용하여 소개 주제를 삭제하는 것도 가능했습니다. 또 다른 재현 성공! 아, 이제 보니 일괄 작업으로 About 주제를 삭제하는 재현은 되지 않는 것 같습니다. 그냥 조용히 실패할 뿐입니다.
위 내용을 고려할 때, 사용자 삭제(사용자 관리 및 자기 삭제) 사례는 작성자가 시스템으로 넘어가므로 무시할 수 있습니다.