شكل بيانات الاستدعاء: category_id مقابل category_slug

قد أكون مخطئًا، لكن يبدو أن البيانات التي تُرجعها استدعاءات ‘post’ تحتوي على category_slug دون category_id، بينما البيانات التي تُرجعها استدعاءات ‘topic’ تحتوي على category_id دون category_slug.

إذا كان الأمر كذلك (ولستُ قد أغفلتُ إعدادًا ما)، فسيكون من الجيد أن تتّحد كلا الاستدعاءات في استخدام إما category_id أو category_slug، أو أن تُرجع كلا الحقلين.

كما سيكون رائعًا للغاية لو احتوى كلا النوعين على parent_category_id و parent_category_slug في حال الوصول إلى منشور أو موضوع موجود في فئة فرعية. حاليًا، يوفر كلا النوعين category_id فقط، وهو ما لا يوضّح ما إذا كانت الفئة رئيسية أم فرعية.

إعجاب واحد (1)

هل توجد أي نية لتحديث الويب هوكس لتشمل دائمًا كلًا من category_id و category_slug، بغض النظر عما إذا كان الويب هوك مخصصًا لـ ‘مشاركة’ (post) أو ‘موضوع’ (topic)؟

معلومات الاستدعاء الحالية الخاصة بـ ‘المشاركة’ غير مثالية لأنه لا توجد طريقة موثوقة لتحديد التصنيف الذي تنتمي إليه… فـ (إذا فهمت بشكل صحيح) لا يشترط أن يكون category_slug فريدًا. إذا كان لديك عدة تصنيفات مختلفة، كل منها يحتوي على ثلاثة تصنيفات فرعية تحمل نفس الروابط المختصرة (لأنك تحتاج إلى أن يبدو تنقل التصنيفات الفرعية متماثلًا للمستخدم)، فلن تتمكن من معرفة التصنيف الفرعي الذي نُشرت فيه ‘المشاركة’ بناءً على الرابط المختصر وحده.

أنا لست مطور Ruby، لكنني أتساءل عما إذا كان هناك خطأ في فئة post_serializer:

def include_category_id?
    @add_title
  end

أليس من المفترض أن يكون:

def include_category_id?
    topic&.category_id.present?
end

لقد قدمت طلب سحب (PR) لإظهار هذا التغيير. قد يكون هذا مجرد تخمين، لكنه قد يساعد في الوصول إلى الحل الحقيقي…

https://github.com/discourse/discourse/compare/master...danielmcquillen:master

إعجابَين (2)

بديلاً، إذا لم تكن هناك مشكلة في post_serializer، بل إن المشكلة تكمن في أن ‘post’ الويب هوكز لا تُرجع category_id

ألا يمكن إضافة الكود التالي إلى web_hook_post_serializer.rb:

  def include_category_id?
    true
  end

(تمامًا كما توجد طريقة مشابهة بالفعل لـ include_topic_title?)…

لسوء الحظ، لا يمكننا إجراء هذه التغييرات بأنفسنا لأن لدينا حسابًا مستضافًا مدفوعًا على Discourse.

نعم، هذا يعمل. لقد أضفته:

بصفتك عميلًا مستضافًا، ستحصل عليه في المرة التالية التي يتم فيها نشر منتداك.

6 إعجابات