Por favor, avalie um script Ruby curto para suspender usuários inativos

Hmm, ao olhar para isso, acho que deveria estar silenciando uma conta em vez de suspender. Se a conta for suspensa, o usuário não poderá fazer login para reivindicá-la.

Aqui está uma revisão…

Versão 0.0.2
silence_reason = 'Inativo'
User.where("views = 0 OR approved = FALSE OR last_seen_at IS NULL")
    .where("id > 0") # evitar usuários do sistema
    .find_each do |user|
  user.silence(reason: silence_reason)
  user.change_trust_level!(TrustLevel[0])
  user.save!
  logger.log_user_silence(user, silence_reason)
  DiscourseEvent.trigger(:user_silenced, user: user)
  sleep(5)
end

Sim, farei um backup antes de fazer qualquer uma dessas coisas.
Sim, sei que alguns TLs existentes serão reorganizados e terei que corrigi-los.

Além disso, em vez de silenciar, devo definir Approved=false ou Active=false? Acredito que isso forçará o usuário a clicar no link de e-mail em vez de fazer login manualmente, o que serve ao propósito de validar o endereço de e-mail.

Tudo isso está relacionado ao meu tópico recente: notes-on-silencing-or-deleting-users

[EDIT]
Também tenho “purge unactivated users grace period days” definido como 7.
Um silêncio ou suspensão reinicia isso? Se sim, se as pessoas não responderem a uma ação da conta em 7 dias, não tenho problemas em purgá-las.

Finalmente (sim, realmente) também tenho “clean up inactive users after days” definido como 365. Posso diminuir para 60 enquanto o fórum ainda está abrindo e apenas deixar as contas existentes saírem da lista. Em seguida, aumentá-lo de volta para 365. Essa é uma abordagem razoável para a poda automatizada de contas em um novo ambiente?

1 curtida