أفضل طريقة لنمذجة "الصداقة" للمستخدم مع كيانات مختلفة؟

StackOverflow https://stackoverflow.com/questions/1268120

سؤال

لدي الكيانات التالية:

  • المستعمل
  • شركة
  • منظمة

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

فكرتي الأصلية المعنية باستخدام كائن صداقة مع علاقة تعدد الأشكال مع الصديق مثل ذلك:

مخطط الصداقة المبسطة:

  • هوية المستخدم
  • ودية_id.
  • friendable_type.
المستخدم - has_many: الشركات، من خلال =>: الصداقات،: الشروط => ['friendable_type =؟،' business ']،: المصدر =>:

مشكلتي هي أن روبي على القضبان activerecord لا يدعم has_many من خلال العلاقات من خلال العلاقات متعددة الجنس على طاولة الانضمام هذه.

في النهاية، أرغب في أن يكون لدي جدول فرد واحد قادرا على التكرار للحصول على قائمة بأصدقاء جميع الأنواع، وأنواع معينة، وما إلى ذلك أدناه:

john = user.find (5) John.imentships.map {| الصداقة | الصداقة}

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

ما أود أن أعرفه هو كيف سيقترب الآخرون عن موقف مثل هذا حيث تريد إنشاء علاقات واحدة إلى كثير من الأشياء المشابهة من خلال جدول مشترك باستخدام Activerecord مع تجنب هذا الخطأ :)

لا يمكن أن يكون لديك has_many: من خلال الشركات "مستخدم # المستخدم" على كائن متعدد الأشكال "الصداقة # الصديقة".

أي نصيحة محل تقدير كبير.

شكرا!

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

المحلول 2

يبدو أن البرنامج المساعد للقضبان "has_many_polymorphs" يسمح لي بالضبط ما أريد.

http://github.com/fauna/has_many_polymorphs/tree/master.

أعطتني إضافة هذا الخط إلى نموذج المستخدم الخاص بي الوظيفة التي أردت:

has_many_polymorphs: friendables، من => [: الشركات،: المنظمات]،: من خلال =>: الصداقات

نصائح أخرى

لا تستخدم: من خلال، استخدم: AS => متعددي بدلا من ذلك في العلاقة بين الأيام Has_many

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