Obrigado pelo seu interesse, @pfaffman!
Existem registros de usuários sem last_seen_at, criados meses atrás, approved=False, active=False, e eles não estão sendo removidos.
Existem registros de usuários com last_seen_at > 7 dias (meses atrás) e 0 visualizações, e eles não estão sendo removidos.
Quaisquer que sejam os critérios usados com essa flag de período de carência, eles não estão selecionando esses registros.
Alguém pode postar a consulta exata que está sendo usada para que eu possa entender quais outros fatores estão envolvidos?
Não, olhando diretamente no banco de dados, existem registros de usuários que se encaixam em cada critério, mas não em todos. Parece que a tabela de usuários no banco de dados está inconsistente. Existem registros com tópicos_entrados ou contagem_de_posts_lidos não zerados, mas com views=0. Existem registros com tópicos_entrados=0 e contagem_de_posts_lidos=0, mas views não é zero.
O ponto chave a lembrar é que, à medida que este site estava sendo desenvolvido, as configurações não eram ideais e humanos e bots estavam se registrando. A cláusula OR parece capturar todos eles. Agora que o site está estabilizado com (espero) configurações sensatas, não espero que novos registros resultem nas mesmas anomalias.
Pretendo executar o script muitas vezes com critérios diferentes. Consultarei os registros primeiro, fora do ambiente, e depois executarei o script de silenciamento para direcionar apenas os registros que realmente quero. Em algumas semanas, farei uma execução final, apenas selecionarei registros silenciados (qualquer pessoa que realmente voltou terá a flag removida) e os removirei todos:
UserDestroyer.new(admin_user).destroy(user, reassign_to: archive_user)
Minha pergunta geral é se o script v0.0.2, com sua abordagem de seleção, registro e silenciamento, está correto para um sistema Discourse. Não sei se há algo mais a ser feito em um loop como este. Nunca criei e executei meu próprio script, então este é um pedido para que me verifiquem em busca de erros de novato.
Obrigado!!