Пользователи получают электронные письма, хотя все настроено так, чтобы уведомления по электронной почте не отправлялись

Сегодня утром я обнаружил, что за последние две недели мы израсходовали более 5000 кредитов на рассылку писем, потому что лишь около 60 из наших ~1000 активных пользователей включили уведомления по электронной почте.

Я отключил рассылку писем в настройках администратора с обратной силой для всех пользователей и добавил CSS-код, чтобы скрыть настройки электронной почты из панели управления пользователя.

Вот скриншот этих настроек. Они уже были такими, но я установил их заново, чтобы вызвать модальное окно с вопросом, хочу ли я изменить настройки для существующих пользователей с обратной силой.

Я также создал тему, объяснив пользователям причину этих изменений и то, что, к сожалению, Discourse не позволяет осуществлять тонкий контроль над тем, какие письма я могу отправлять со своего форума. Поэтому у меня есть только два варианта: либо разрешить всем устанавливать любые настройки, либо разрешить это только сотрудникам (или никому, но это довольно бесполезный вариант, за исключением очень специфических пограничных случаев).

Один из пользователей, ответивших мне, сообщил, что всё ещё получает письма. Сброс, который я выполнил, был около 10:00. Вот скриншот почтового ящика этого пользователя.

Я вошёл в систему от имени этого пользователя, чтобы убедиться, что нет каких-либо проблем, снова включил видимость настройки для проверки и, действительно, настройки не изменились, несмотря на то, что в панели администратора мне сообщали об обратном.

Есть ли какая-либо команда Rails, которую я могу выполнить, чтобы убедиться, что у всех пользователей эта опция отключена (установлена в значение «никогда»), как и должно быть?

При применении изменений исторически сбрасывалось только значение по умолчанию для тех, кто не выбрал предпочтения вручную, чтобы не переопределять индивидуальные выборы (например, включение уведомлений по электронной почте для тех, кто от них отказался). Указанное число должно показывать, сколько пользователей было затронуто, то есть только тех, кто подлежал изменению, а не общее количество пользователей.

Вы можете установить значения для этих пользовательских предпочтений через консоль Rails. :+1: В этой теме есть некоторые советы: Edit a user preference for everyone or a subset of users

На всякий случай, если кому-то это понадобится. Я ничего не знаю о Ruby, и, похоже, старые темы на этом форуме устарели.

В настоящее время запрос psql для правильного сброса этих опций для каждого пользователя выглядит так:

UPDATE user_options SET email_messages_level = 2, email_level = 2, email_previous_replies = 2;

Вот как это делается в Rails:

UserOption.all.update_all(email_messages_level: 2, email_level: 2, email_previous_replies: 2)