Wie interagiert `educate_until_posts` mit den kürzlichen Änderungen an `check_education_message`?

Fortsetzung der Diskussion aus „Thanks for Contributing“-Popup in Beiträgen erscheint auch nach Überschreiten des Limits?:

Ich habe eine Frage zu dieser Änderung. Ich habe das Gefühl, mir fehlt etwas oder ich habe beim Testen missverstanden, wie das funktionieren soll.

Meine Erwartung war, dass der Bildungsbanner bei den ersten Beiträgen erscheint, wobei die Anzahl durch die Site-Einstellung educate_until_posts gesteuert wird. Standardmäßig beträgt dieser Wert 2.

Zum Testen habe ich ihn nur zur Sicherheit auf 5 geändert. Allerdings hat mein Testnutzer die Bildungsmitteilung nur einmal gesehen.

Ich habe mir auch den Code angesehen:

Wie ich es verstehe, schließt die Methode zunächst private Nachrichten und Nutzer aus, bei denen bereits ein Eintrag vorliegt, der besagt, dass die Bildungsmitteilung angezeigt wurde. Das ergibt für mich Sinn.

Anschließend wird ermittelt, ob der Nutzer ein neues Thema erstellt oder antwortet, und die Gesamtzahl der Beiträge/Themen des Nutzers berechnet.

Der nächste Teil verwirrt mich. Wenn die Gesamtzahl der Beiträge unter dem konfigurierten Limit liegt, wird der Eintrag erstellt, der verhindert, dass die Bildungsmitteilung erneut angezeigt wird – und danach wird die Meldung angezeigt.

Was übersehe ich hier?

Wenn beispielsweise educate_until_posts auf dem Standardwert von 2 belassen wird, würde ich erwarten, dass die Meldung bei den ersten zwei Beiträgen des Nutzers angezeigt wird.

Der Nutzer beginnt mit der Erstellung seines allerersten Beitrags. Es handelt sich nicht um eine private Nachricht, und es existiert noch kein Eintrag in der UserHistory, daher wird die Meldung angezeigt – das ist logisch.

Aber warum wird der Eintrag in der UserHistory unmittelbar danach erstellt? Würde das die Meldung nicht verhindern, jemals wieder angezeigt zu werden?

Ich hätte eher so etwas erwartet:

  count = @user.topic_count + @user.post_count


  if count >= SiteSetting.educate_until_posts
    UserHistory.create!(
      action: UserHistory.actions[:notified_about_composer_education],
      target_user_id: @user.id,
    )
  elsif count < SiteSetting.educate_until_posts
      return (

Aber wenn dies tatsächlich ein Problem wäre, wären meiner Meinung nach die Tests zu dieser Einstellung fehlgeschlagen. Da der PR bereits gemergt wurde, waren sie es offenbar nicht.

Kann mir jemand helfen zu verstehen, was ich hier übersehe?

5 „Gefällt mir“

Wow, was für ein kleiner Abgrund. Ich glaube, die Verwirrung rührt zu Recht von der fehlenden Aktualisierung des Einstellungsnamens (educate_until_posts) her, denn, soweit ich weiß, scheint es in PR#400074 das Ziel zu sein, dass die Benachrichtigung nur einmal und nie wieder angezeigt wird, unabhängig von einer Anzahl.

Die Einstellung bedeutet also nicht mehr *„Zeige die Nachricht für die ersten N Beiträge

2 „Gefällt mir“

Die Hauptmotivation hinter dieser Änderung war es, zu verhindern, dass die Bildungsnachricht immer wieder angezeigt wird. Doch nun, da ich dieses Thema gesehen habe, glaube ich, dass ich vielleicht etwas zu weit gegangen bin, da die Einstellung dadurch irrelevant wirkt, wenn die Nachricht nur einmal erscheint.

Ich werde mich noch einmal damit befassen und schauen, ob ich einen besseren Mittelweg finden kann. Sobald ich das getan habe, werde ich hier ein Update veröffentlichen.

4 „Gefällt mir“

Diese Korrektur wurde gestern übernommen:

Wenn du unter dem Schwellenwert educate_until_posts liegst, wird die Hinweismeldung nur einmal angezeigt, wenn du mit der Eingabe beginnst, und erscheint nicht erneut, es sei denn, du verfasst einen Beitrag oder lädst die Seite neu.

2 „Gefällt mir“