الوصف: طلب مستخدم إلغاء شارة “الإعجاب الأول” الخاصة به بعد أن قام هو نفسه بإلغاء الإعجاب بمنشور، لكن الشارة استمرت في إعادة منحها. يمكن العثور على السياق في منشوري السابق في فئة الدعم.
خطوات التكرار:
- إنشاء مستخدم جديد
- الإعجاب بمنشور
- تلقي شارة “الإعجاب الأول”
- إلغاء الإعجاب بالمنشور
- التبديل إلى مستخدم مسؤول
- الانتقال إلى لوحة تحكم المسؤول للمستخدم الذي أعجب بالمنشور
- زيارة خيار “تعديل الشارات”
- النقر على “إلغاء” على شارة “الإعجاب الأول”
- الانتظار قليلاً (لست متأكدًا من وقت تشغيل مهمة الملء التلقائي لهذه الشارة تحديدًا، ولكن يومًا واحدًا سيكون كافيًا بالتأكيد. ربما حاول تشغيل جميع المهام المتعلقة بالشارات في Sidekiq لتسريعها؟)
- يتم منح الشارة مرة أخرى للمستخدم تلقائيًا، لنفس المنشور الذي تم إلغاء الإعجاب به وفي نفس تاريخ إجراء الإعجاب.
لقد قمت بتضييق نطاق المشكلة إلى هذا السطر من استعلام SQL لمنح الشارة، لأنه بينما لا يزال الصف في post_actions لإجراء الإعجاب موجودًا بعد إلغاء الإعجاب، فإن عمود deleted_at الخاص به تم تعيينه إلى قيمة تاريخ، وهو ما لا يأخذه الاستعلام في الاعتبار. أعتقد أن إصلاح هذا سيغير عبارة WHERE في الاستعلام الفرعي إلى:
WHERE post_action_type_id = 2 AND
pa.deleted_at IS NULL AND
(:backfill OR pa.post_id IN (:post_ids) )
لكن ليس لدي بيئة تطوير معدة أو الكثير من الوقت لاختبار هذا الإصلاح بنفسي.
الأولوية/الخطورة: لقد قمت بحل هذه المشكلة بنفسي عن طريق حذف صفوف post_actions ذات الصلة بالفعل، ولم أتلق مثل هذا الطلب من قبل. أعتقد أن هذا لا يجعلها ذات أولوية عالية جدًا؟