تم الإبلاغ عن أخطاء متعددة في إضافة الأحداث خلال اليومين الماضيين، وتبدو جميعها مرتبطة بمشاكل تحويل الأنواع في الحقول المخصصة. لم يتم تحديث إضافة الأحداث بشكل جوهري منذ بضعة أشهر.
في ملف plugin.rb، يتم تحويل event_start إلى عدد صحيح:
نعم، ظهر هذا عدة مرات في الماضي. يبدو أن هذه الموجة الأخيرة تتزامن مع العمل الأخير على ملف has_custom_fields.rb، لذا قد يكون هناك ما يستحق المراجعة هناك.
هذا لا يصلح المشكلة، لكنه يساعد في التعامل معها في حال ظهورها:
توصيتي العامة هنا هي أنه بصفتك مطوّر إضافة، يجب أن تضيف دائمًا فهارس في عملية الترحيل لفرض القيود بشكل صحيح. في الواقع، تتجنب الغالبية العظمى من الإضافات التي نكتبها هذه الأيام استخدام الحقول المخصصة إلا عند الحاجة القصوى، وتفضل استخدام جداول مخصصة يسهل فهمها وإدارتها. في هذه الحالة المحددة، تريد إنشاء فهرس كما يلي:
create unique index idxStartEvent on topic_custom_fields(topic_id) where name = 'start_event'
غير متأكد مما نحتاج فعله آخر في النواة هنا، لقد فكرنا في إعادة هيكلة الحقول المخصصة لكننا قلقون بشأن ذلك إلى حد ما. أحد الأشياء التي أفكر فيها هو ببساطة إزالة دعم المصفوفات من الحقول المخصصة لأنها تتسبب في عدد هائل من المشاكل على مر السنين.
عذرًا على إحياء هذا الموضوع، لكن إحدى هذه الظروف هي عند استخدام مؤشر من نوع رمز (symbol)، مثل custom_fields[:hello] عند تحديث القيمة الحالية. في هذه الحالة، يتم إضافة حقل آخر بدلاً من تحديث الحقل الموجود، مما يؤدي إلى ظهور مصفوفة. وهذا قد يكون الشرط الوحيد برأيي.
من المؤكد أن هذا الإصلاح سيحل الأثر الجانبي الناتج.