ユーザーは、メール通知を送信しないようにすべて設定されている場合でも、メールを受信しています

今朝、過去2週間で5000通以上のメールクレジットを消費したことがわかりました。これは、約1000人のアクティブユーザーのうち、わずか約60人しかメール通知を有効にしていないためです。

管理設定でメールを無効にし、すべてのユーザーに遡って適用しました。また、ユーザー管理パネルからメール設定を非表示にするCSSを追加しました。

これは設定のスクリーンショットです。以前からこの状態でしたが、既存ユーザーの設定を遡って変更するかどうかを尋ねるモーダルをトリガーするために、再度設定しました。

また、この変更の理由と、残念ながらDiscourseでは独自のフォーラムから送信できるメールを細かく制御できないため、全員が好きな設定を許可するか、スタッフのみ(または非常に特殊なエッジケースを除いてほとんど役に立たないオプションですが、誰も許可しないか)のいずれかしか選択できないことを説明するトピックを開きました。

返信してきたユーザーの一人が、まだメールを受信していると述べました。
リセットは午前10時頃に実行しました。これは、そのユーザーの受信トレイのスクリーンショットです。

ユーザーになりすまして問題がないことを確認し、設定の表示を再度有効にして確認したところ、管理パネルのオプションでは変更されると表示されていましたが、実際には設定は変更されていませんでした。

すべてのユーザーが(「なし」に設定されて)それらのオプションをオフにしていることを確実にできる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)