ال Yearly Review plugin يستمر في إنشاء مواضيع جديدة

مرحباً!

تم إنشاء مراجعة سنوية على منتدى الخاص بي. تم تغيير اسم الموضوع، ولأن المكون الإضافي للمراجعة السنوية يتحقق من أسماء العناوين المتطابقة لمعرفة ما إذا كان يجب عليه إنشاء مراجعة سنوية جديدة، فقد أنشأ واحدة أخرى بعد 24 ساعة.

لقد حذفت الجديدة، وأعدت تسمية الأولى بالعنوان الافتراضي.

لكن المكون الإضافي لا يزال ينشئ مواضيع جديدة بعد 24 ساعة.

إليك ما يعرضه مستكشف البيانات:

SELECT created_at, title, fancy_title
FROM topics
WHERE title like '%2022%année en cours de révision%'
AND deleted_at IS NULL
ORDER BY created_at DESC
created_at title fancy_title
2023-01-04T14:52:19.345Z 2022 : l'année en cours de révision 2022 : l’année en cours de révision
2023-01-01T10:09:20.503Z 2022 : l'année en cours de révision 2022 : l’année en cours de révision

:information_source: في الواقع، تم إنشاء مواضيع جديدة 3 مرات، ربما بسبب اختلاف بين علامة اقتباس وعلامة اقتباس مزخرفة [1] في العنوان، لذا اضطررت إلى ذلك، ومن هنا جاء فارق الأيام الثلاثة والنتائج الوحيدة البالغة 2، لكنني أود الاحتفاظ فقط بالأول الذي تم إنشاؤه.

أي فكرة لماذا يستمر المكون الإضافي في إنشاء مواضيع على الرغم من وجود موضوع موجود بالعنوان الافتراضي، وكيف أوقفه عن فعل ذلك؟ ماذا لو قمت بتعطيله وإعادة تمكينه في نهاية عام 2023؟ هل سينشئ موضوعًا بعد 24 ساعة من إعادة تمكينه؟
علاوة على ذلك، لن يكون هذا هو الحل الأكثر أناقة، لذا أود معرفة مصدر المشكلة بالضبط:thinking:

سأقوم بتعطيل المكون الإضافي للأيام/الأسابيع القادمة حتى يتم تحديد المشكلة ومنع إنشاء المراجعات السنوية الجديدة.


  1. انظر الحكاية هنا: A few questions about the yearly review plugin ↩︎

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

هل قمت بتغيير المؤلف إلى مستخدم مختلف أيضًا؟
يبحث الرمز عن موضوع بهذا العنوان الذي أنشأه المستخدم النظام.

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

مرحباً!
أنا المسؤول المساعد. لقد قمت فقط بتغيير الاسم. لم أقم بتغيير المؤلف.
ماذا لو كان هناك موضوعان بنفس الاسم والمستخدم النظامي كمؤلف؟ هل سيأخذ الأخير؟

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

إنه لا “يأخذ” واحدًا، بل يتحقق مما إذا كان الموضوع موجودًا، وإذا لم يكن كذلك، فسيقوم بإنشاء واحد.
إذا كان هناك واحد أو اثنان (أو 999) فلن يقوم بإنشاء واحد جديد.

إعجابَين (2)

إذًا، هناك خطأ ما في مكان ما حيث يستمر في إنشاء مواضيع جديدة بينما يوجد موضوع بالفعل :thinking:

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

كما قال @Maxence_C، تم تغيير العنوان فقط، لذلك لا يزال المؤلف هو @system.

على حد علمي، هذا الشرط متحقق. :person_shrugging:

3 إعجابات

هل قمت بتحديث yearly_review.topic_title، أم قمت فقط بإعادة تسمية الموضوع؟

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

لقد قمنا للتو بإعادة تسمية عنوان موضوع المراجعة السنوية الأول ثم أعدنا تسميته مرة أخرى إلى الاسم الافتراضي بعد أكثر من 24 ساعة من إنشائه.
لم نغير yearly_review.topic_title.

3 إعجابات

إذا كان عنوان الموضوع مطابقًا تمامًا للعنوان الذي تم تعيينه عند نشر الموضوع في البداية، فيجب منع نشر مواضيع المراجعة الجديدة بواسطة هذا السطر:

return if Topic.where(user: Discourse.system_user, title: title).exists?

ما لم يكن سبب المشكلة هو أن العنوان ليس مطابقًا تمامًا، فربما تكون المشكلة متعلقة بنشر الموضوع باللغة الفرنسية. سيكون من الرائع معرفة ما يتم تعيينه كـ title هنا عند تشغيل المهمة:

title = I18n.t(\"yearly_review.topic_title\", year: review_year)

أتساءل عما إذا كان يحاول مطابقة العنوان الإنجليزي مقابل العنوان الفرنسي. هل اللغة الفرنسية هي اللغة الافتراضية في موقعك؟

تعديل: إذا كان الموضوع يتم نشره بعنوان فرنسي، فإن title في الكود أعلاه يجب أن يتم تعيينه باللغة الفرنسية. لذا فمن غير المرجح أن يكون هذا هو سبب المشكلة.

4 إعجابات

إنهما متطابقان، إلا إذا فاتني اختلاف بسيط في بيانات مستكشف الموضوعين التي تم إرجاعها. يمكنني تقديم المزيد من البيانات إذا لزم الأمر.

هل يجب أن أقوم بتشغيل ذلك في وحدة تحكم rails أو في مكان آخر؟

نعم، إنها كذلك.


سأقوم بإعادة تمكين المكون الإضافي للتحقق مرة أخرى إذا كان بإمكاني جمع المزيد من المعلومات حول المراجعة السنوية التالية التي تم إنشاؤها (إذا كان هناك واحدة).

إعجابَين (2)

حسنًا، لقد قمت بتشغيل المهمة يدويًا، وقد أنشأت موضوعًا. تشغيلها مرة أخرى لن ينشئ مراجعة سنوية جديدة.

يمكنني نقل الردود من الموضوع الأول إلى الموضوع الجديد، وحذف الأول، ويجب أن يتجاوز ذلك المشكلة.

لكنني فضولي جدًا بشأن ما يحدث هنا ولماذا تبدو المتطلبات غير مستوفاة على الرغم مما أراه في قاعدة البيانات.

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

وأنا كذلك. لست متأكدًا مما يحدث، ولكن يبدو أن هذا التحقق من وجود موضوع موجود غير موثوق به بعض الشيء:

return if Topic.where(user: Discourse.system_user, title: title).exists?

أتساءل عما إذا كان لدى أي شخص في فريق Discourse أفكار حول كيفية تحسينه.

اضطررت إلى تعطيل المكون الإضافي لمنع إنشاء مواضيع متعددة ليس نهجًا جيدًا. يقوم المكون الإضافي بتحميل بعض CSS المستخدم لتصميم مواضيعه. إذا تم تعطيل المكون الإضافي، فلا أعتقد أن CSS يتم تحميله.

إعجابَين (2)

ملاحظة فقط: تم تحديث المكون الإضافي بالترجمة الفرنسية الجديدة، وبالتالي فقد أنشأ مراجعة سنوية جديدة أخرى اليوم :sweat_smile:
لقد نسخت عنوان هذا الموضوع الجديد، وحذفته، وأعدت تسمية الموضوع الأصلي عن طريق لصق العنوان.
سنرى ما إذا كان سيتم إنشاء موضوع جديد غدًا على الرغم من قيامي بنسخ ولصق العنوان الخام.

3 إعجابات

شكراً لمتابعتك هذا الأمر. الاعتماد على عنوان الموضوع لمنع إنشاء مواضيع مراجعة متعددة هو نهج غير موثوق به حقًا (هذا خطئي.) بمجرد انتهاء شهر يناير، لن تظهر المشكلة مرة أخرى حتى العام المقبل. @JammyDodger، ربما يمكنك تمرير ملاحظة إلى فريق Discourse للنظر في ابتكار طريقة أفضل لمنع إنشاء مواضيع متعددة. يجب أن يتم ذلك قبل يناير 2024. الوقت يمر بسرعة :slight_smile:

9 إعجابات

أعتقد أنه يمكنني فعل ذلك. :slight_smile: :+1:

5 إعجابات

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.

تحديث بسيط، أعتقد أن هذا يجب أن يتم حله بواسطة: :partying_face:

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