데이터베이스에서 게시물을 삭제할 수 있나요?

질문이 너무 기초적인 것 같아 미리 양해드립니다.
Discourse 데이터베이스에 접근할 수 있습니다(플러그인을 통해).
테스트 중에 대량으로 생성한 일부 게시글을 쿼리를 사용하여 삭제할 수 있을까요?

delete from posts where id in (123, 567, ... 등)

이러한 작업을 수행하는 것이 안전한가요?

Data Explorer 플러그인을 통해 데이터베이스에 접근하는 경우, 해당 플러그인은 읽기 전용 쿼리만 허용합니다. 이를 통해 데이터베이스에 데이터를 기록하는 것은 불가능합니다.

Rails 콘솔을 사용하여 게시물을 완전히 삭제하는 것은 가능하지만, 이렇게 하는 것은 권장하지 않습니다. 가장 좋은 방법은 Data Explorer 플러그인을 사용하여 삭제할 게시물을 찾은 후, Discourse 사용자 인터페이스에서 사용할 수 있는 도구를 통해 게시물을 삭제하는 것입니다.

어떤 이유로든 이 방법이 작동하지 않는다면 알려 주세요. Rails 콘솔에서 게시물을 삭제하는 방법에 대한 세부 정보를 제공해 드리겠습니다.

저는 이 엔진에 대해 전문가가 아니지만, 그렇게 하면 posts 테이블에서 항목만 삭제되고, 하나의 게시글은 다른 테이블에 연결된 항목이나 해당 post_id와 연결된 많은 메타 정보를 가질 수 있으므로 안전하지 않다고 생각합니다. 나중에 어떤 부분이 깨질 수도 있습니다. 따라서 게시글 삭제에는 통합된 도구를 사용하는 것이 좋습니다.

니콜라이, 고마워.
나도 그렇게 생각해… 하지만 갑자기 이 애플리케이션에 대한 진짜 전문가들이 와서 "지워도 돼!"라고 할 수도 있겠지. )))

다만, 전문가들은 이것이 허용된다고 말하지 않습니다:

  • 권장되지 않습니다.
  • Discourse 로드맵에 포함되어 있지 않으며, 추가할 계획도 없습니다.
  • 영구 삭제는 되돌릴 수 없기 때문에 개발되지 않고 있습니다.
  • 이 기능을 개발하기 위해 비용을 지불한 사람이 없습니다.

이 기능을 요청한 사람은 아무도 개발하지 않았습니다. 너무 어렵거나 개발 비용에 비해 가치가 없기 때문입니다.

이러한 사항의 예는 다음 주제에서 확인하세요:

저를 전문가라고 부르지는 않겠지만, 수년간 파일과 코드를 살펴보고 분석하며 직접 다뤄본 경험이 꽤 있습니다.

제가 본 것들은, 그리고 보지 못한 것들은, 저 혼자서는 로컬호스트에서 실험하는 것 이상을 해낼 만큼 지식이 충분하지 않다는 확신을 주기에 충분했습니다.

저는 "ON DELETE CASCADE"를 단 한 번도 본 적이 없습니다. 대신 많은 모델 파일에서 "has_many", "dependent:", "Indexes", "ensure_consistency"를 많이 본 적이 있습니다. 여기에는 작업 파일이 하나 있습니다: discourse/app/jobs/scheduled/ensure_db_consistency.rb at main · discourse/discourse · GitHub

개인적으로 Discourse를 매우 좋아하지만, 코어 안전장치 밖에서 발생하는 행동의 결과를 그들이 처리할 것이라고 기대하지는 않습니다. 즉, 저는 제 코드를 자주 깨뜨리지만, 그럴 경우 전적으로 제 책임으로 받아들입니다. 하지만 그것은 저의 경우이고, 아직 제가 알지 못하는 코어 코드가 어딘가에 있을 수도 분명히 있습니다.

또한,

하지만 그 경우(질문자의 경우)에는 의미가 없을 것입니다.