add_to_serializer(:serializer, property) { value }
لم يعد هذا يعمل في بيئة الإنتاج. لكنه لا يزال يعمل في بيئة التطوير.
في البداية، ظننت أن المشكلة قد تكون مرتبطة بطريقة تمكين الإضافات. حيث أن طريقة _include? في add_to_serializer تستخدم حالة enabled?:
if define_include_method
# Don't include serialized methods if the plugin is disabled
klass.public_send(:define_method, "include_#{attr}?") { plugin.enabled? }
end
ومع ذلك، يبدو أن استخدام نظام enabled_site_setting لا يحل المشكلة. علاوة على ذلك، يبدو أن enabled? لا تزال تعود بالقيمة الافتراضية true على أي حال:
def enabled?
@enabled_site_setting ? SiteSetting.get(@enabled_site_setting) : true
end
لحل المشكلة المباشرة، قمنا بتغيير طريقة تسلسل البيانات في إضافاتنا، لكنني أود فهم السبب الجذري إن أمكن. هل لدى أحدكم أي أفكار حول ما يحدث هنا؟
هذا أمر غير معتاد للغاية، حيث أننا نستخدمه في الاستطلاعات، وهي بالتأكيد ليست معطلة. الشيء الوحيد الذي يمكنني التفكير فيه هو أنها كانت معطلة في إصدار بيتا، ولكن تم إصلاحها في الفرع الرئيسي. هل يمكنك تجربتها على tests-passed ومعرفة ما إذا كانت تعمل؟
سأختبره أكثر اليوم. الاستخدام في الاستطلاعات يختلف قليلاً، حيث يُسبق دائماً طريقة _include? بمعامل ثالث false. أشك في أن طريقة include? قد تكون هي المشكلة.
داني غائب، لكن في الأساس هناك ثلاثة أماكن مختلفة نقوم فيها بتسلسل الفئات مع كميات متفاوتة من البيانات. سنرى ما إذا كان هناك أي طريقة لإزالة المزيج (mixin) هنا، مما يجعل فهم هذا الأمر أكثر صعوبة.