Fechar massivamente tópicos existentes mais antigos que X?

Olá,

Migrei um fórum do XenForo para o Discourse, agora há muitas postagens antigas que eu gostaria de fechar. Existe uma maneira de dizer “fechar todos os tópicos com mais de x meses”? Eu já defini isso na categoria, mas só funciona para novos tópicos.

2 curtidas

Você pode tentar usar esta configuração nas configurações da Categoria:

Não tenho certeza se isso fechará as coisas retroativamente, mas vale a pena tentar.

Meu outro pensamento foi fazer um filtro avançado e definir uma data anterior:

A partir daí, você pode usar ações em massa nos tópicos que aparecerem.

4 curtidas

Você pode fechar tópicos em massa com Performing bulk actions as a moderator
Mas dependendo de quantos tópicos você deseja fechar, Administrative Bulk Operations pode ser a melhor escolha.

7 curtidas

Sim, haveria algo semelhante vinculado, como posso restringir a uma categoria?

2 curtidas

Você pode encontrar o ID da categoria e, em seguida, usá-lo como uma condição adicional no comando. Por exemplo, fechar todos os tópicos abertos na categoria ‘geral’ que foram criados antes de 24 de setembro:

cat_id = Category.find_by_slug('general').id
Topic.where(closed: false).where("created_at < '2024-09-24'").where(category_id: cat_id).find_each do |topic|
  topic.update_status('closed', true, Discourse.system_user)
end

Esses tipos de operações sempre me deixam um pouco nervoso. Certifique-se de criar um backup do seu banco de dados antes de executá-los, caso algo dê errado. Também pode ser uma boa ideia executar algum tipo de verificação preliminar para garantir que você está operando nos dados corretos. Uma maneira de fazer isso seria retornar a count de tópicos nos quais a operação será realizada. Por exemplo:

Topic.where(closed: false).where("created_at < '2024-09-24'").where(category_id: cat_id).count
4 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.