تخطي المستخدمين الذين لم يتغيروا لتحرير الشارات بالجملة

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

ينتج عن ذلك تجربة مستخدم مربكة، حيث يتلقى المستخدمون إشعارًا بمنح الشارة على الرغم من عدم تغير أي شيء.

كما أنه يتعارض مع إحدى حالات الاستخدام لدينا: نود إسقاط الشارات القديمة ومنح شارات جديدة عن طريق تمرير القائمة المحدثة للحائزين، مع الإبقاء على الحائزين الآخرين وتاريخ المنح دون تغيير.

من ناحية الميزات، التغيير هو تحسين صارم: عن طريق تحميل قائمة فارغة أولاً، يتم استعادة السلوك القديم.

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

عندما تقول “تمرير القائمة المحدثة” و “تحميل قائمة فارغة”، يبدو أنك تعمل في وحدة تحكم Rails، ربما مع قائمة تحتوي على users.id؟

إذا كان الأمر كذلك، فهل يمكن أن يساعدك الحصول على قائمة حاملي الشارات الحاليين لاستبعادهم من عمليات السحب/منح الشارات؟

استعلام مستكشف البيانات
-- [params]
-- badge_id :badge

SELECT
    u.id AS user_id
FROM user_badges ub
JOIN users u  ON u.id = ub.user_id
JOIN badges b ON b.id = ub.badge_id
WHERE ub.badge_id = :badge

مع هذه القائمة المصدرة، ربما يمكن لبعض الاستعلامات والسكريبتات:

  1. إيجاد التقاطع بين حاملي الشارات الحاليين وقائمة “حاملي المستقبل” لديك.
  2. إزالة المستخدمين الذين يمثلون هذا التقاطع من قائمة “حاملي المستقبل” لديك.
  3. سحب الشارة من أي مستخدمين ليسوا ضمن هذا التقاطع.
  4. تحميل قائمة “حاملي المستقبل” المعدلة لمنح الشارة لحامليها الجدد فقط.

(قد يكون هناك حتى طريقة للقيام بكل ذلك داخل Rails، لكنني لست قويًا في هذا المجال.)

لا؟ يوجد نموذج منح جماعي في واجهة إدارة الشارات، وأنا أستخدمه.

أوه، هذا محرج قليلاً، لقد أغفلت إضافة الجائزة الجماعية.

ربما تكون ميزتك خيارًا آخر عند الرفع، شيء من هذا القبيل؟

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