العلاقة بين نماذج وراثة طاولة واحدة
-
19-09-2019 - |
سؤال
لدي النموذجين التاليين
class ContactField < ActiveRecord::Base
end
class Address < ContactField
end
class Phone < ContactField
end
و
class Contact < ActiveRecord::Base
end
class Company < Contact
end
class Person < Contact
end
أريد جهة اتصال واحدة، بغض النظر عن الشركة أو الشخص، للحصول على العديد من ملفات الصور (العناوين والهواتف) ... فأين يجب أن أضع تلك لديه الكثير و ينتمي إلىب شكرا
المحلول
قلت بالفعل في اللغة الإنجليزية العادية :-)
أريد جهة اتصال واحدة، بغض النظر عن الشركة أو الشخص، للحصول على العديد من ملفات الصور (العناوين والهواتف) ... فأين يجب أن أضع تلك لديها الكثيرين وينتمي إليها؟ شكرا
Class Contact <activerecord :: Base Has_many: Contact_fields End Class Contactfieldfield <activerecord :: Base ينتمي: نهاية الاتصال
سيتم تورث هذه العلاقة من قبل كل من العنوان والهاتف
نصائح أخرى
يبدو أنك تصف ملكا للعلاقة. يجب تحديد الجمعيات في الفصل الأم، حتى يمكن تورثها من قبل الفئات الفرعية.
class ContactField < ActiveRecord::Base
belongs_to :contact
belongs_to :company, :foreign_key => :contact_id
belongs_to :person, :foreign_key => :contact_id
end
class Contact < ActiveRecord::Base
has_many :contact_fields
has_many :addresses
has_many :phones
end
ومع ذلك، سوف @ contact.contact_fields فقط إعادة سجلات جهة اتصال. إذا كنت بحاجة إلى الأساليب المحددة في أي من الفئات الفرعية، فيمكنك دائما استخدام طريقة تصبح. هناك بعض الطرق حول ذلك. هذه إضافة الجمعيات الإضافية، كما فعلت. أو استخدام activerecord :: Base # يصبح