Per favore, valuta uno script Ruby breve per sospendere utenti inattivi

Grazie per il tuo interesse, @pfaffman!

Ci sono record utente senza last_seen_at, creati mesi fa, approved=False, active=False, e non vengono eliminati.
Ci sono record utente con last_seen_at > 7 giorni (vecchi di mesi) e 0 visualizzazioni, e non vengono eliminati.

Qualunque sia il criterio utilizzato con questo flag di periodo di grazia, non seleziona questi record.
Qualcuno può pubblicare la query esatta che viene utilizzata in modo che io possa capire quali altri fattori sono coinvolti?

No, guardando direttamente il DB ci sono record utente che soddisfano ciascun criterio ma non tutti. Sembra che la tabella utenti nel database sia incoerente. Ci sono record con topics_entered o posts_read_count non nulli, ma con views=0. Ci sono record con topics_entered=0 e posts_read_count=0, ma views è non nullo.

Il punto chiave da ricordare è che mentre questo sito veniva sviluppato le impostazioni non erano ottimali e si registravano umani e bot. La clausola OR sembra catturare tutti questi. Ora che il sito è stabilizzato con (spero) impostazioni sensate, non mi aspetto che le nuove registrazioni producano le stesse anomalie.

Ho intenzione di eseguire lo script molte volte con criteri diversi. Interrogherò prima i record, al di fuori dell’ambiente, e poi eseguirò lo script di silenziamento per indirizzare solo i record che voglio veramente. Tra un paio di settimane farò un’ultima esecuzione, selezionerò solo i record silenziati (a chiunque sia effettivamente tornato verrà rimosso il flag) e li eliminerò tutti:

UserDestroyer.new(admin_user).destroy(user, reassign_to: archive_user)

La mia domanda generale è se lo script v0.0.2, con il suo approccio alla selezione, alla registrazione e al silenziamento, sia corretto per un sistema Discourse. Non so se ci sia qualcos’altro da fare in un ciclo come questo. Non ho mai creato ed eseguito il mio script, quindi questa è una richiesta di controllo per errori da principiante.

Grazie!!