سؤال

لديّ تطبيق لنظام إدارة المحتوى الذي يستخدم جدول شجرة متعدد الأشكال باعتباره جوهر ترتيبه. لقد وصلت إلى مشكلة حيث تنمو الشجرة بشكل كبير ، ولأن لدينا عدد قليل من الوحدات المختلفة (حوالي 25) ، فقط القيام: include =>: لم يقطع المثيل الخردل. مثيل هو اسم علاقتنا المتعددة الأشكال.

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

كنت أتساءل فقط عما إذا كان هناك مكون إضافي لإدارة هذا بالفعل؟

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

أي عيوب لهذا التصميم؟

أفترض أن أكون أكثر مرونة ، يمكن أن يكون العمود نوعًا من ذاكرة التخزين المؤقت التسلسلية حيث يمكنني تخزين أشياء أخرى لاحقًا إذا لزم الأمر؟ جاه! :د

هل كانت مفيدة؟

المحلول

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

قمت بعد ذلك بتعديل طريقة After_create على فئتي التجريدية (تلك التي ترثها الأشكال المتعددة) وجعلتها تخصيص Cached_Name في الجدول المركزي. لقد أضفت أيضًا استدعاء طريقة efter_update تقوم بتحديث cached_name كلما تم تغيير الاسم العادي.

بسيط جدًا حقًا ، ولكن هذا يعني الآن أنه لم يعد مضطرًا إلى استدعاء الأشكال في المواقف البسيطة مثل إنشاء شريط فهرس.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top