جمعية متعددة الأشكال مع جمعيات متعددة على نفس النموذج
-
19-09-2019 - |
سؤال
أنا مرتبك قليلا حول جمعية متعددة الجنسيات لدي. أحتاج إلى نموذج مقال للحصول على صورة رأس، والعديد من الصور، ولكن أريد الحصول على نموذج صورة واحدة. لجعل الأمور مربكة أكثر، فإن نموذج الصورة هو متعدد الأشكال (للسماح بالموارد الأخرى للحصول على العديد من الصور).
أنا أستخدم هذا الارتباط في نموذج مقالي:
class Article < ActiveRecord::Base
has_one :header_image, :as => :imageable
has_many :images, :as => :imageable
end
هل هذا ممكن؟ شكرًا.
المحلول
نعم. هذا ممكن تماما.
قد تحتاج إلى تحديد اسم الفصل ل header_image
, ، لأنه لا يمكن استنتاجها. تضمن :dependent => :destroy
أيضا، لضمان تدمير الصور إذا تمت إزالة المقالة
class Article < ActiveRecord::Base
has_one :header_image, :as => :imageable, :class_name => 'Image', :dependent => :destroy
has_many :images, :as => :imageable, :dependent => :destroy
end
ثم على الطرف الآخر ...
class Image < ActiveRecord::Base
belongs_to :imageable, :polymorphic => true
end
نصائح أخرى
حاولت هذا، ولكن بعد ذلك إرجاع Header_Image إحدى الصور. ببساطة لأن جدول الصور لا يحدد نوع استخدام صورة مختلفة (header_image مقابل الصورة العادية). يقول ببساطة: Imageable_Type = صورة لكلا الاستخدامات. لذلك إذا لم تكن هناك معلومات مخزنة حول نوع الاستخدام، فلا يمكن التمييز ActiverCord.