Excluir em massa todos os tópicos em uma categoria

:bookmark: Este guia fornece instruções sobre como excluir em massa todos os tópicos dentro de uma categoria em uma instância Discourse auto-hospedada.

:person_raising_hand: Nível de usuário necessário: Administrador do Sistema

:warning: Acesso SSH ao seu servidor é necessário

A remoção de todos os tópicos de uma categoria pode ser necessária por vários motivos, como reorganização de conteúdo ou limpeza de discussões desatualizadas. Este guia orienta você pelas etapas para realizar essa tarefa com segurança em um servidor Discourse auto-hospedado.

:warning: Esta é uma ação destrutiva. Certifique-se de fazer um backup do seu fórum antes de continuar

Etapas para excluir tópicos em uma categoria

  1. Identifique o slug da categoria: Este é o nome usado na URL da categoria.
  2. Acesse seu servidor: Use SSH para fazer login no seu servidor.
ssh username@your-server.com
  1. Navegue até o diretório do Discourse:
cd /var/discourse
  1. Entre na aplicação Discourse:
./launcher enter app
  1. Execute o comando de exclusão: Substitua \"mycategory\" pelo slug da sua categoria.
rake destroy:topics[\"mycategory\"]

:information_source: Este processo pode levar tempo dependendo do número de tópicos.

Excluindo tópicos em subcategorias

Para excluir tópicos em uma subcategoria, inclua o slug da categoria pai no seu comando. Por exemplo:

rake destroy:topics[\"childcategory\",\"parentcategory\"]

Excluir todos os tópicos em todas as categorias

:warning: Esta ação limpará todos os tópicos de todas as categorias!

rake destroy:topics_all_categories

Perguntas Comuns

Por quanto tempo o Discourse armazena tópicos excluídos? Ainda consigo acessar tópicos com um link direto.

Os tópicos permanecem no banco de dados após a exclusão. Apenas a equipe ainda poderá ver os tópicos excluídos.

Como posso excluir permanentemente os tópicos do banco de dados?

Você pode excluir permanentemente publicações (e seus tópicos) do banco de dados usando a rake task destroy:posts. Isso exige que a configuração de site oculta can_permanently_delete seja ativada primeiro. Passe os IDs das publicações como uma lista separada por vírgulas:

rake destroy:posts[4,8,15,16,23,42]

Você também pode canalizar os IDs de publicações de um arquivo:

cat post_ids.txt | rake destroy:posts

É possível restringir a exclusão de tópicos a um período de tempo (entre duas datas)?

Você precisaria fazer isso a partir do console do Rails, um comando semelhante ao seguinte deve funcionar:

Topic.where(\"created_at.....\").each do |t|
   first_post = t.ordered_posts.first
   PostDestroyer.new(Discourse.system_user, first_post).destroy if first_post
 end

Como encontro o slug ou o ID da minha categoria?

A tarefa destroy:topics usa o slug da categoria (o nome na URL da categoria). Você pode listar todas as categorias com seus IDs e slugs executando:

rake categories:list

Informações Adicionais

Para mais informações sobre outras operações administrativas, consulte:

21 curtidas