Standardkategorien für Beobachtungseinstellungen zurücksetzen

Hallo,

ich versuche, die standardmäßig beobachteten Kategorien für alle Benutzer zurückzusetzen, aber ohne Erfolg.

Obwohl in den Einstellungen keine Kategorien ausgewählt zu sein scheinen, haben die Benutzereinstellungen einige Kategorien ausgewählt.

2 „Gefällt mir“

Hallo @ufukayyildiz

Haben Sie herausgefunden, wie Sie mit diesem Problem fortfahren können? Als ich dasselbe tat, hatte ich auch einige Schwierigkeiten. Es funktionierte überhaupt nicht ^^ siehe Members not receiving emails from Watched category (again)

3 „Gefällt mir“

Nein, noch nicht.

2 „Gefällt mir“

Ich glaube, es ist so konzipiert, dass die Einstellung die Entscheidungen des Benutzers respektiert. Wenn ein Benutzer also manuell eine Kategorie hinzufügt, wird diese nicht überschrieben.

Sie könnten vielleicht etwas Magie von der Rails-Konsole aus tun, aber ich denke, ein besserer Ansatz wäre, Ihre Benutzer aufzuklären. Was meinen Sie? Oder haben Sie eine spezielle Situation, in der Sie die Standardeinstellung auf jeden Fall ändern müssen?

1 „Gefällt mir“

Vielen Dank für Ihre Antwort.

Ich würde mich sehr über einen Rails-Konsolenbefehl freuen, um Benutzereinstellungen zu kopieren. Ich verstehe die Designentscheidung, dass Benutzereinstellungen Vorrang vor Website-Einstellungen haben, vollkommen. Aber das Problem ist, dass sich Websites und ihre Organisation damit weiterentwickeln.

In unserem Fall haben wir von einer Organisation umgestellt, bei der alle Ankündigungen als neues Thema gepostet werden: Das Ergebnis war eine riesige Menge an unbesprochenen Themen (nur 1 Beitrag) auf der Titelseite. Ich sehe jetzt, dass ich mich im Februar 2023 mit diesem Fall zu beschäftigen begann Unlist or archive a post when it has no reply per category.

Da diese Ankündigungen relevant sind und Fristen enthalten, war es keine Option, sie von der Titelseite zu verbergen. Also wechselten wir zu einer Organisation mit 5 dedizierten Themen (Art der Ankündigung), in denen jeder Beitrag eine neue Ankündigung ist.[1] Da diese Beiträge wichtig sind, haben wir versucht, die Kategorie auf “beobachtet” zu setzen, um die Benutzer in Echtzeit zu benachrichtigen.

Dies war der Beginn der Situation, die derzeit dazu führt, dass niemand etwas erhält, außer user_mentioned und digest. Der Wechsel wäre so viel einfacher gewesen, wenn man alle Benutzereinstellungen einfach auf die neuen Website-Standardeinstellungen zurücksetzen könnte. Oder, als eine weitere Idee, die Benutzereinstellungen eines virtuellen Neuanmelders auf alle anderen Benutzer kopieren könnte.[2]

In der Zwischenzeit habe ich die Benutzer darüber informiert, dass Systeme manchmal nicht wie beabsichtigt funktionieren und dass Benachrichtigungs-E-Mails für einen unbestimmten Zeitraum nicht ankommen werden.


  1. Hier wäre es sehr nützlich, nur “Auf Thema antworten” aktivieren zu können. ↩︎

  2. Was ich mir vorstellen kann, dass es derzeit über Rails möglich ist. ↩︎

Hallo nochmal. Ich untersuche das immer noch, und in unserem Fall ist das Zurücksetzen der Benutzereinstellungen sinnvoll, da sich die Struktur der Website geändert hat, was zu einer Änderung der Funktionsweise von E-Mail-Benachrichtigungen geführt hat.

Von der Discourse-KI wurde mir der folgende Rails-Befehl vorgeschlagen:

UserOption.update_all(email_digests: true, email_level: 1, email_messages_level: 1)

Glauben Sie, dass dies das erreichen würde, was wir suchen?
Danke!

Ich glaube, die folgenden Schritte haben das Problem gelöst!

In den Website-Einstellungen habe ich die Kategorie (31) standardmäßig und rückwirkend als zu beobachtend markiert.
Überprüfen Sie:

CategoryUser.where(category_id: 31).pluck(:user_id, :notification_level)

Die meisten Benutzer haben für meine Kategorie 31 einen notification_level von 3. :+1:

Nun stehen zwei Dinge im Weg, damit diese Änderung eine 100%ige Wirkung erzielt:

  1. Die globalen E-Mail-Einstellungen des Benutzers.
  2. Die Benachrichtigungseinstellungen des Benutzers für jedes Thema in der Kategorie (31).

:warning: Die folgenden Zeilen ändern persönliche Einstellungen Ihrer Benutzer. Geraten Sie nicht in Streit.

Zuerst muss man, um die E-Mails der Benutzer zu “reaktivieren”, den email_level der Benutzer auf 1 (d. h. “wenn abwesend”) oder 2 (“immer”) setzen:

UserOption.update_all(email_level: 1)

Überprüfen Sie:

UserOption.group(:email_level).count

Ich erhalte etwas wie => {1=>X}, wobei X die Anzahl der Benutzer ist.

Zweitens hat der notification_level des Themas Vorrang vor dem notification_level der Kategorie (der in den Website-Einstellungen geändert wurde). Der einfachste Weg ist, die Thema-Einstellungen aus dem Weg zu räumen. Dazu löscht man einfach die Einträge Thema für Thema:

TopicUser.where(topic_id: <topic_id_nr>).destroy_all

Überprüfen Sie:

TopicUser.where(topic_id: <topic_id_nr>).exists?

Ich erhalte etwas wie => [], was bedeutet, dass kein Benutzer Thema-Einstellungen hat und der notification_level der Kategorie für alle Benutzer der Standard ist.


N.B.: Einige Benutzer hatten immer noch keine Benachrichtigungseinstellungen für die Kategorie (31) gesetzt (d. h. keinen Eintrag in der category_user-Tabelle). Um sicherzustellen, dass ihr notification_level gesetzt ist, muss man einen Eintrag mit dem Wert für notification_level erstellen:

User.find_each do |user|
  unless CategoryUser.exists?(user_id: user.id, category_id: 31)
    CategoryUser.create!(user_id: user.id, category_id: 31, notification_level: 3)
  end
end

Überprüfen Sie:

CategoryUser.where(category_id: 31).pluck(:id, :notification_level)