Пожалуйста, оцените короткий скрипт на Ruby для приостановки неактивных пользователей

Спасибо за ваш интерес, @pfaffman!

Есть записи пользователей без поля last_seen_at, созданные месяцы назад, с approved=False и active=False, но они не удаляются.
Есть записи пользователей с last_seen_at > 7 дней (созданные месяцы назад) и 0 просмотров, но они также не удаляются.

Какие бы критерии ни использовались с этим флагом grace period, они не отбирают эти записи.
Может ли кто-нибудь опубликовать точный запрос, который используется здесь, чтобы я мог понять, какие ещё факторы задействованы?

Нет, при прямом просмотре базы данных обнаруживаются записи пользователей, которые соответствуют каждому критерию по отдельности, но не всем сразу. Похоже, что таблица пользователей в базе данных несбалансирована. Есть записи с ненулевыми topics_entered или posts_read_count, но с views=0. Есть записи с topics_entered=0 и posts_read_count=0, но views не равен нулю.

Главное, что нужно помнить: в процессе разработки этого сайта настройки не были оптимальными, и регистрировались как люди, так и боты. Условие OR, похоже, охватывает все эти случаи. Теперь, когда сайт стабилизирован и (надеюсь) настройки разумны, я не ожидаю, что новые регистрации приведут к таким же аномалиям.

Я планирую запускать скрипт многократно с различными критериями. Сначала я буду выполнять запрос к записям вне среды, а затем запущу скрипт silence, чтобы воздействовать только на те записи, которые мне действительно нужны. Через пару недель я проведу финальный запуск: выберу только заглушённые записи (у тех, кто действительно вернулся, флаг будет снят), и удалю их все:

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

Мой общий вопрос: корректен ли скрипт версии v0.0.2 с его подходом к выбору, логированию и заглушению для системы Discourse? Не знаю, нужно ли что-то ещё делать в цикле подобного рода. Я никогда не создавал и не запускал собственные скрипты, поэтому прошу проверить меня на наличие ошибок новичка.

Спасибо!!