خطأ في حالة الأحرف للمسار في private_messages_group

أنا لست معتادًا جدًا على صناديق الوارد الخاصة بالمجموعات، ولا أتأكد من كيفية تكرار هذه المشكلة، ولكن ما يحدث هو التالي:

  • تم إعداد صندوق وارد للرسائل الخاصة لمجموعة، لنسمّها ExampleGroup.
  • يحصل عضو في هذه المجموعة على إشعار يقول ‘هناك 6 رسائل في صندوق وارد examplegroup الخاص بك’.
  • عند النقر على هذا الإشعار، يحاول النظام تحميل /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 إعجابات

إذا قمت بإنشاء الإشعارات مباشرةً في وحدة التحكم، فسيحترم الرابط حالة الأحرف (وهذا يعمل حتى لو كانت البيانات وهمية)

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)

شكرًا لك على مساعدتك! لكن هذا ليس الرابط الصحيح،

إنه ليس /u/username/messages/group/groupname
بل /topics/private-messages-group/username/groupname.

لا أستطيع معرفة مصدر الرابط الأخير أو كيفية إنشائه.

إعجابَين (2)

أعتقد أن الحل الصحيح هنا هو عدم اشتراط كتابة اسم المجموعة بحروف كبيرة في معلمات URL. تم ذلك عبر:

لاحظ أن التصفح إلى /u/username/messages/group/groupname سيؤدي إلى إرسال طلب AJAX إلى /topics/private-messages-group/username/groupname، لذا يبدو أن ما فعله @angus أعلاه لتصحيح هذه المشكلة صحيح.

شكرًا لك على الإبلاغ عن هذه المشكلة @RGJ :+1:

5 إعجابات