2010-02-04 39 views
14

mô hình một:Làm cách nào để xóa đối tượng con khi cha mẹ bị xóa trong đường ray?

has_many :b, :dependent => :delete_all 

mô hình b:

belongs_to :a 
belongs_to :c 

mô hình c:

has_many :b 

Khi tôi xóa một a, tôi cũng muốn có con b's xóa để họ bị xóa khỏi bất kỳ c's nào có thể tham chiếu đến họ. Tuy nhiên, phần trên không hoạt động. Tôi đánh giá cao sự giúp đỡ nào.

+1

Trùng lặp: http://stackoverflow.com/questions/331394/can-i-set-up-cascade-deleting-in-rails – hobodave

Trả lời

32

Giống như vậy:

class Widgets < ActiveRecord::Base 
    has_many :whatevers, :dependent => :destroy 
end 

Cập nhật

bình luận gần đây của bạn cho biết bạn đang sử dụng phương pháp xóa() để xóa các đối tượng của bạn. Điều này sẽ không sử dụng các cuộc gọi lại. Vui lòng đọc the manual để biết chi tiết cụ thể.

+0

Tôi không thể hiểu tại sao điều này không hoạt động. Khi tôi xóa một 'a' tham chiếu đến 'b', và 'b' đó cũng được tham chiếu trong 'c', 'b' vẫn là con của 'c' sau khi xóa 'a', bằng cách sử dụng ở trên. – James

+0

James, bạn phải có: depend =>: phá hủy tất cả các đối tượng trong chuỗi. –

+0

hmmm ... hoạt động khi tôi gọi phá hủy trên phụ huynh, nhưng không hoạt động khi tôi gọi xóa. Đây có phải là dự kiến ​​không? – James

Các vấn đề liên quan