Routen-Großschreibungsfehler in private_messages_group

Ich bin mit privaten Gruppen-Postfächern nicht sehr vertraut und bin mir nicht sicher, wie ich das Problem reproduzieren kann, aber folgendes tritt auf:

  • Ein privates Nachrichtenpostfach wurde für eine Gruppe eingerichtet, nennen wir sie ExampleGroup.
  • Ein Mitglied dieser Gruppe erhält eine Benachrichtigung: „Es gibt 6 Nachrichten in Ihrem ExampleGroup-Postfach“.
  • Beim Klicken auf diese Benachrichtigung wird versucht, /topics/private-messages-group/username/examplegroup.json zu laden.
  • Dies führt zu einem Fehler.

Ich vermute, dass dies daran liegt, dass es keine Gruppe namens examplegroup gibt. Die Gruppe heißt ExampleGroup.

ListController::generate_message_route macht Folgendes:

group = Group.find_by(name: params[:group_name])

Eine Änderung zu

group = Group.find_by(name: params[:group_name])
group = Group.where('lower(name) = ?', params[:group_name].downcase).first unless group

scheint das Problem zu lösen. Aber ich bin mir sicher, dass dies nicht das eigentliche Problem ist. Irgendwo wird der Parameter in Kleinbuchstaben umgewandelt, wo er es nicht sein sollte (meiner Meinung nach…).

Hat jemand einen Vorschlag, wo man suchen sollte?

3 „Gefällt mir“

Wenn Sie Benachrichtigungen direkt in der Konsole erstellen, wird die Groß-/Kleinschreibung im Link beachtet (dies funktioniert auch bei fingierten Daten).

Notification.create!(
  user_id: 1,
  notification_type: Notification.types[:group_message_summary],
  data: { inbox_count: 5, group_name: "MyGroup", group_id: 41, username: 'angus' }.to_json
)

Das Problem könnte auf der Erstellungsseite liegen, also im Post-Alerter: discourse/app/services/post_alerter.rb at main · discourse/discourse · GitHub

Allerdings kann ich dies nicht reproduzieren.

1 „Gefällt mir“

Vielen Dank für deine Hilfe! Aber das ist nicht der richtige Link.

Es ist nicht /u/username/messages/group/groupname,
sondern /topics/private-messages-group/username/groupname.

Ich kann nicht herausfinden, woher der letzte Link kommt und wie man ihn generiert.

2 „Gefällt mir“

Ich bin der Meinung, dass die richtige Lösung hier darin besteht, nicht zu verlangen, dass der Gruppenname in den URL-Parametern großgeschrieben wird. Dies wurde wie folgt umgesetzt:

Beachte, dass das Aufrufen von /u/username/messages/group/groupname eine AJAX-Anfrage an /topics/private-messages-group/username/groupname auslöst. Daher sieht der Ansatz, den @angus oben zur Fehlersuche verwendet hat, korrekt aus.

Danke für die Meldung dieses Problems, @RGJ :+1:

5 „Gefällt mir“