RGJ
(Richard - Communiteq)
1
プライベートグループの受信トレイについてはあまり詳しくなく、この現象を再現する方法も確信が持てませんが、以下のようなことが起こっています:
- グループ(例:ExampleGroup)用にプライベートメッセージの受信トレイが設定されています。
- そのグループのメンバーに「examplegroup の受信トレイにメッセージが 6 件あります」という通知が届きます。
- その通知をクリックすると
/topics/private-messages-group/username/examplegroup.json の読み込みが試行されます。
- これによりエラーが発生します。
これは、examplegroup という名前のグループが存在しないことが原因だと考えています。実際のグループ名は ExampleGroup です。
ListController::generate_message_route は以下のような処理を行っています:
group = Group.find_by(name: params[:group_name])
これを以下のように変更すると問題が解消されるようです:
group = Group.find_by(name: params[:group_name])
group = Group.where('lower(name) = ?', params[:group_name].downcase).first unless group
ただし、これが根本的な問題ではないことは確かです。どこかで、パラメータが小文字に変換されてしまっているのだと思います(多分……)。
どこを確認すべきか、ご提案はありますか?
「いいね!」 3
angus
(Angus McLeod)
3
コンソールで直接通知を作成する場合、リンクは大文字小文字を尊重します(データが偽物でも動作します)。
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
)
問題は作成側の、つまりポストアラーターにある可能性があります:discourse/app/services/post_alerter.rb at main · discourse/discourse · GitHub
ただし、この問題は再現できません。
「いいね!」 1
RGJ
(Richard - Communiteq)
4
お助けいただきありがとうございます!しかし、そのリンクは正しくありません。
/u/username/messages/group/groupname ではなく、/topics/private-messages-group/username/groupname です。
後者がどこから来るのか、またどのように生成されるのかを見つけることができません。
「いいね!」 2
techAPJ
(Arpit Jalan)
5
ここでは、URL パラメータに大文字のグループ名を必須としないことが正しい修正だと考えられます。以下のコミットで対応済みです:
/u/username/messages/group/groupname にアクセスすると、/topics/private-messages-group/username/groupname へ AJAX リクエストが送信されるため、@angus さんが上記でこの問題をデバッグした方法は正しいと思われます。
この問題を報告してくださった @RGJ さん、ありがとうございます 
「いいね!」 5