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?

1 „Gefällt mir“