عند محاولة إزالة النجمة من شارة Bug Reporter الخاصة بي لاستخدام شارة أخرى كشارة مفضلة، أحصل على خطأ “FAILED”. يمكن إلغاء تمييز الشارات الأخرى (هل هذه كلمة حتى؟)، ولكن هذه الشارة لا يمكن إلغاء تمييزها.
أنا قادر على إلغاء تمييزه بنجمة بشكل جيد.
هل يمكن أن يكون الأمر متعلقًا بانقطاع اتصال الإنترنت لديك في الفيديو؟ مجرد تخمين
لقد جربتها للتو مع اتصال واي فاي مستقر. ما زلت أحصل على الخطأ.
هذه المشكلة موجودة منذ فترة طويلة. لقد بحثت فيها العام الماضي، وهذه هي خطوات إعادة إنتاجها:
- بصفتك مسؤولاً، قم بتعيين
max favorite badgesإلى 2، وأنشئ شارة واحدة على الأقل يمكن كسبها عدة مرات. - بصفتك مستخدمًا عاديًا، قم بتعيين شارتين كمفضلتين، إحداهما هي الشارة التي يمكن كسبها عدة مرات (يشار إليها باسم الشارة أ).
- بصفتك مسؤولاً، امنح المستخدم الشارة أ مرة أخرى.
- بصفتك مستخدمًا عاديًا، قم بتحديث الصفحة وحاول إلغاء تمييز الشارة أ كمفضلة. ستواجه الخطأ.
سبب الخطأ هو أنه في كل مرة يتم فيها منح شارة يمكن كسبها عدة مرات، يتم إنشاء سجل user_badge جديد في قاعدة البيانات. ومع ذلك، عندما يفضل المستخدم الشارة ويتلقاها مرة أخرى، لا يتم تمييز سجل user_badge الجديد تلقائيًا على أنه is_favorite. عندما يحاول المستخدم إلغاء تمييز الشارة أ كمفضلة، يرسل الواجهة الأمامية معرف user_badge الأحدث افتراضيًا. نظرًا لأن هذا السجل غير مميز على أنه is_favorite، يفترض الواجهة الخلفية أن المستخدم يحاول تعيين شارة جديدة كمفضلة (بدلاً من إلغاء تمييزها كمفضلة)، مما يتجاوز حد max favorite badges، مما يؤدي إلى الخطأ.
يقع الكود ذو الصلة في:
أحد الحلول الممكنة هو تعديل السطر 131 إلى:
if UserBadge.where(badge: user_badge.badge, user: user_badge.user).pluck(:is_favorite).any? &&
ومع ذلك، هذا لا يعالج بشكل كامل عدم الاتساق في سجلات قاعدة البيانات.
كحل مؤقت، يمكن للمستخدم العادي إلغاء تمييز جميع الشارات كمفضلة عن طريق تشغيل كود JavaScript التالي في وحدة التحكم:
const user_name = require("discourse/models/user").default.current().username;
const badges = await require("discourse/models/user-badge").default.findByUsername(user_name);
const favorites = new Map();
badges.filter((b)=>b.is_favorite).forEach((b)=>favorites.set(b.badge_id,b));
favorites.forEach((b)=>b.favorite());
لقد واجهت هذا الخطأ للتو، ولكن عند نسخ ولصق الرمز في وحدة التحكم، يظهر خطأ في بناء الجملة:
SyntaxError: Unexpected identifier ‘require’. Expected ‘;’ after variable declaration.
SyntaxError: Unexpected identifier ‘identifier’
ربما هذا قديم بعض الشيء؟ هل لدى أي شخص نسخة محدثة؟
حسنًا، لقد قمت بإلغاء تمييز شارتي الأخرى (متعاطف)، ثم تمكنت من إلغاء تمييز شارة “مبلغ عن الأخطاء”.
بعد ذلك، إذا قمت بتمييز شارة “متعاطف”، والتي نجحت، فإن تمييز “عاشق” أعاد هذا الخطأ. غريب جدًا.
تعديل: بعد إعادة تحميل الصفحة بين كل إعادة تمييز، قمت الآن بإزالة شارة “مبلغ عن الأخطاء” (المتعارضة بشكل ساخر).
أهلاً بك، شكراً على مساهمتك! لقد راجعت طلب السحب الخاص بك ويحتاج إلى بعض التغييرات.
شكراً على مراجعتك، لقد قمت بتحديث طلب السحب هذا
رائع! تمت الموافقة على هذا ودمجه.
سيظهر التغيير على ميتا قريبًا.
تم إغلاق هذا الموضوع تلقائيًا بعد 3 أيام. لم تعد الردود الجديدة مسموح بها.
