RGJ
(Richard - Communiteq)
11월 23, 2020, 3:45오후
1
프라이빗 그룹 인박스(private group inboxes)에 대해 잘 알고 있지 않으며, 이 문제를 어떻게 재현해야 하는지 정확히 알지 못하지만, 다음과 같은 상황이 발생하고 있습니다:
특정 그룹(예: 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)
11월 25, 2020, 1:19오전
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
)
이 문제는 생성 측, 즉 포스트 알리러(post alerter)에 있을 수 있습니다: discourse/app/services/post_alerter.rb at main · discourse/discourse · GitHub
하지만 저는 이 문제를 재현하지 못하겠습니다.
1개의 좋아요
RGJ
(Richard - Communiteq)
11월 25, 2020, 6:19오전
4
도와주셔서 감사합니다! 하지만 그 링크는 올바르지 않아요.
/u/username/messages/group/groupname이 아니라
/topics/private-messages-group/username/groupname입니다.
마지막 링크가 어디서 오는 건지, 그리고 어떻게 생성하는지 찾을 수가 없어요.
2개의 좋아요
techAPJ
(Arpit Jalan)
4월 20, 2021, 5:00오전
5
여기서는 URL 파라미터에서 대문자 그룹 이름을 요구하지 않는 것이 올바른 수정 방법이라고 생각합니다. 다음을 통해 처리했습니다:
committed 04:55AM - 20 Apr 21 UTC
/u/username/messages/group/groupname으로 이동하면 /topics/private-messages-group/username/groupname으로 AJAX 요청이 발화되므로, @angus님이 위에서 이 문제를 디버깅하기 위해 한 작업은 올바르게 보입니다.
이 문제를 보고해 주셔서 감사합니다 @RGJ
5개의 좋아요