كيف يمكنني جعل الحذف المتتالي في علاقة one_to_many في القضبان أكتيفيريكورد؟

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

سؤال

ولدي نموذج في القضبان مع العلاقة one_to_many. عندما أقوم بحذف الأب، كنت ترغب في حذف جميع الأطفال. كيف أفعل ذلك؟ أريد حذف جميع الطلبات وبنودها عندما حذف مستخدم

وبلدي النماذج هي:

class User < ActiveRecord::Base
  has_many :orders, :foreign_key => "id_user"
end

class Order < ActiveRecord::Base
  has_many :order_items, :foreign_key => "id_pedido"
  belongs_to :user, :foreign_key => "id_usuer"
end

class OrderItem < ActiveRecord::Base
  belongs_to :order, :foreign_key => "id_pedido"
end
هل كانت مفيدة؟

المحلول

والجواب رابطة الدفاع اليهودية هو الصحيح - تحتاج إلى إضافة :dependent => :destroy على كل العلاقات - أي في الدرجة User، إضافة إلى has_many :orders، وفي الصف Order، إضافة إلى has_many :order_items

وأنت قد ترغب أيضا في تغيير السلوك الخلية WRT المفاتيح الخارجية، وربما وضع لهم ON DELETE CASCADE.

نصائح أخرى

ما كنت تبحث عن خيار :dependent => :destroy على has_many.

مستندات has_many

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