Excluir em massa todos os tópicos de uma categoria

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

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

:warning: É necessário acesso SSH ao seu servidor

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

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

Passos 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 do Discourse:
./launcher enter app
  1. Execute o comando de exclusão: Substitua "minhacategoria" pelo slug da sua categoria.
rake destroy:topics["minhacategoria"]

:information_source: Este processo pode levar algum 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["filhacategoria","categoriapai"]

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 Frequentes

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 membros da equipe ainda poderão ver os tópicos excluídos.

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

Você pode excluir permanentemente posts (e seus tópicos) do banco de dados usando a tarefa rake destroy:posts. Isso requer que a configuração do site can_permanently_delete esteja habilitada primeiro. [Enable setting to allow admins to permanently delete data]

Passar IDs de post como uma lista separada por vírgulas:

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

Você também pode passar IDs de post a partir 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ê precisará fazer isso pelo 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 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:

22 curtidas