0

Bir örnek olarak bu davayı ele alalım:Etkin kayıttaki polimorfik ilişkileri silmek için nasıl basamak uygularım?

class Child < ActiveRecord::Base 
    belongs_to :fruitful, polymorphic: true 
end 

class Parent < ActiveRecord::Base 
    has_many :children, as: :fruitful, dependent: :destroy 
end 

# Once I create the parent and children 
p = Parent.create 
p.children << Child.new 
p.children << Child.new 
p.save 

# But deleting parent does not delete children: 
p.destroy # why not? 

soru olur ise "bağımlı: yok" aktif kaydın polimorfik derneği ile desteklenen ve ben yetim kayıtları önlemek için before_destroy geri arama uygulaması gerekir mi değil?

cevap

1

belongs_to :parent mu?

parent.destroy numaralı telefonu aramadan önce parent.reload numaralı telefonu arayabilmeniz için çocuğun kimliğinin bilinmesi gerekir. << Child.new'u yaptığınızda, bellek nesnesinde verileri doğru şekilde yansıtmayabilir.

Düzeltme: This guy explains it better! Pratikte, normalde çocukları manipüle ettikten sonra doğrudan bir nesneyi yok etmeyeceğinizi umuyorum, bu yüzden bir konsol sorunu olabilir ve uygulamanızda reload'a ihtiyacınız olmamalıdır.

+1

İlk olarak, cevapladığınız için teşekkürler. İkincisi, bu durum benim gerçek durumumun polimorfik ilişkiyi kullanarak "çocuklarla" doldurulmuş gerçek bir model olduğu ve yok etme yönteminin denetleyicinin "yok etme" eylemi içinde çağrıldığı basitleştirilmiş bir örnekti. Polimorfik olanlar korunurken, tüm POLONFİK olmayan ilişkilerin DB'den silinmiş olduğunu görüyorum. Bu tür derneklerde "bağımlı:: yok et" seçeneğini "DEĞİŞTİRMEYİN" etiketlerini taşıdığını fark ettim ... – Vlad

+0

Hah! Görünüşe göre aslında bağımlı olarak eklemeyi unuttum:: kodumu yok et! – Vlad