كيفية تدمير سجل مع HAS_MANY ،: الاعتماد =>: تدمير
-
28-09-2019 - |
سؤال
لقد قمت ببناء Auditlog Rail 3 بمساعدة عدد قليل من الإضافات ، التي تخزن البيانات في جدول Auditlog مع الحقول التالية لتحديد الهوية (feeded_id ، feeded_type)
لذلك في حالتي ، لدي صور ضوئية لها صور.
class PhotoAlbum < ActiveRecord::Base
has_many :photos, :dependent => :destroy
عندما أقوم بحذف صورة ضوئية (معرف = 2) يعمل هذا بشكل جيد للغاية لحذف جميع الصور المرتبطة به ، لكنه لا يحذف عناصر من Auditlog مثل هذا: (FEEDED_ID = 2 ، feeded_type = photalbum)
بالنظر إلى أن جدول Auditlog لا يحتوي على عمود "photo_album_id" ، ولا يمكنه ذلك ، هل هناك طريقة لإعداد مصير معتمد مع القضبان لحذف جميع العناصر المرتبطة بها في TEH Auditlog عند حذف صورة ضوئية؟
شكرا ، أنا أعلم أن هذا واحد أكثر تعقيدًا من معظمهم. شكرا لقراءة من خلالها!
المحلول
أعتقد أن ما تبحث عنه هو مزيج من
belongs_to :feeded, :polymorphic => true
في فئة سجل التدقيق الخاصة بك و
has_many :logs, :as => :feeded, :dependent => :destroy
في فئة photalbum الخاصة بك.
إذا لم يكن لديك فصل لتمثيل سجل التدقيق الخاص بك ، فيجب أن تكون قادرًا على إضافة ملف belongs_to
إلى الفصل الحالي (في الإضافات الخاصة بك ربما؟).
لست متأكدًا بنسبة 100 ٪ من: AS =>: خيار التغذية ، سيتعين عليك تسمية هذا الرمز بشكل صحيح ولست متأكدًا مما يتوقعه ActivereCord ، ولكن belongs_to
ستبحث العلاقة عن feeded_id و feeded_type ، لذلك عندما يكون الكائن "الوالد" عبارة photo_album.id = audit_logs.feeded_id AND audit_logs.feeded_type = 'PhotoAlbum'
. نظرًا لأن هذا لا يتطلب أي تغييرات على قاعدة البيانات الخاصة بك ، يجب أن تستمر جميع التعليمات البرمجية الموجودة في العمل.
يمكنك القراءة على خيارات للجمعيات هنا.