القضبان - كيف يمكن أن تنتمي إلى الكود؟ "

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

  •  21-09-2019
  •  | 
  •  

سؤال

أنا أعمل على تطبيق Rails الذي سيحتوي على معلومات على مجموعة من الأشخاص. هناك حالتان للاستخدام:

  1. يدخل المسؤول ويحافظ على ملف تعريف الشخص
  2. يمكن للشخص أن يقرر التسجيل وتسجيل الدخول والحفاظ على ملفه الشخصي الخاص

أحاول تحديد العلاقة بين الملف الشخصي والمستخدم. الآن ، هذا هو profile belongs_to :user, ، و user has_one :profile.

لكن هذا ينفجر ، لأن بعض الملفات الشخصية ليس لها مستخدم حتى الآن - فهي تحتفظ بها المسؤول. في هذه الحالة ، user_id العمود في profiles هل فارغ ، فشل الانضمام ، ولن يتم تحميل الصفحة. ++

كيف يمكنني إعداد نوع من العلاقة "ربما ينتمي إلى"؟

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

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

المحلول

هذه هي الطريقة الصحيحة للقيام بذلك. belongs_to لا يمنع null القيم ، وهذا يبدو وكأنه ما تريد.

قد لا يكون لدى "الصفحة" لملف تعريف لا ينتمي إلى مستخدم بعد العديد من الاستعلامات ، لأنه لا توجد حاجة (أو طريقة) للاستعلام عن جدول المستخدمين لهذا الملف الشخصي.

يجب عليك مراجعة profile.user ل nil وقدم وجهات نظرك وفقًا لذلك.

نصائح أخرى

اذا كان Profile حقا ينتمي إلى أ User, ، بعد ذلك ، لا ينبغي أن يكون فارغًا على الإطلاق (تمامًا مثلما لا يكون من المنطقي التفكير في Engine بدون ال Car إنه مرتبط). لذلك تحتاج إلى حذف Profile.belongs_to :user جمعية.

الآن يجب أن تكون قادرًا على التحرير بحرية Profiles وببساطة إرفاقهم بـ User بمجرد استعدادهم. لكن لديك مشكلة أخرى:

يمكن للشخص أن يقرر التسجيل وتسجيل الدخول والحفاظ على ملفه الشخصي الخاص

كيف يحدد النظام بشكل موثوق أي ملف تعريف تم إنشاؤه مسبقًا ينتمي إلى مستخدم معين ليس لديه ملف تعريف بعد؟ هذه مشكلة في التصميم التي يتعين عليك الفرز.

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