أجل، يمكنني فعل ذلك. لكن سيكون ذلك نوعًا من الحيلة قليلاً ![]()
لست متأكدًا من أنني أستطيع افتراض أن هذا الحل البديل سيبقى فعالًا مع مرور الوقت. كما أنه محفوف ببعض المخاطر. على سبيل المثال، إذا قمت بتشغيل هذا الكود فقط، فستظل إعدادات الموقع الخاصة بـ post_undo_action_window_mins للمستخدم قد تغيرت. يمكنك إعادة تغييرها في نهاية عملية الترحيل، لكن إجراء تغييرات على الإعدادات بهذه الطريقة لحظيًا لتجاوز حارس الحماية ليس أمرًا مثاليًا.
ما أسعى إليه بشكل مثالي هنا هو تغيير طفيف في واجهة ReactionManager لجعل من الممكن ترحيل الردود (retorts) إلى ردود فعل (reactions) بشكل موثوق. حاليًا، تم إعدادها فقط للتعامل مع الطلبات القادمة من العميل.
إحدى الطرق للقيام بذلك هي:
- تجريد حارس الحماية في
toggle!إلى طريقةensure_can_toggle - جعل طريقة
ensure_can_toggleخاضعة لخيارforce
هذا هو النهج المتبع عادةً للتعامل مع عمليات الترحيل أو الاستيراد الخلفي في أجزاء أخرى من Discourse (إذا قمت بالبحث في app/ أو lib/ عن force، فستجد بعض الأمثلة).
هل هذا منطقي؟