سؤال

قليلا من سؤال مبتدئ على جمعيات القضبان.

لدي نموذج علة، ونموذج الحالة. الحالة هي أساسا مجرد جدول زوج أساسي / قيمة. من بين الخيارات المتاحة، أود أن أقول حالة علة has_one لها أكثر منطقية. ومع ذلك، وفقا ل هذه

المحتوى ينتمي contenttemplate. العودة وننظر إلى كيف وصفت المشكلة، وسترى أنها تعمل. مع ينتمي_، فإن الجدول يقبل المسؤولية عن المفتاح الأجنبي. لذلك المحتوى لديه محتوى_template_id. و containtemplate لا يحتاج إلى أي شيء. يمكنني الإشارة إليها في الإرادة. منجز.

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

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

المحلول

نعم، أعتقد أنك قد وجدت مجرد سيناريو غريب الأطوار في القضبان. أفترض أنه قد يكون من المفيد عرض "الحالة" كنوع من الفئة التي ينتمي إليها الخطأ - في هذا الضوء، من المنطقي.

نصائح أخرى

TABLE:
    Bug
    id integer
    desc string
    status_id integer fk

    Status
    id integer
    desc string

RAILS MODEL:
    Bug
    belongs_to :status

    Status
    has_many :bugs

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

  • واحد إلى كثير: في هذه الحالة يجب أن يكون هناك has_many في فئة الأخطاء و belongs_to في فئة الحالة،
  • واحد إلى واحد: في هذه الحالة يجب أن يكون هناك has_one في فئة الأخطاء و belongs_to في فئة الحالة.

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

إذا كانت الحالة مجرد جدول نظرية / قيمة مفتاح، فإنه يبدو وكأنه قد ترغب في Habtm.(has_and_belongs_to_many) العلاقة بين الوضع والعلة. مع habtm، ما سينتهي به الأمر هو bugs_statuses انضم إلى الجدول الذي لديه bug_id و status_id أعمدة جنبا إلى جنب مع جداول الأخطاء الخاصة بك وحالاتك.

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