Bu aynı sorunu içine koştu ve burada neler olduğunu anlamaya yaptığın şey
... tüm dernekler dependent: :destroy
olarak ayarlanır ne:
ary = Klass.reflect_on_all_associations
.select { |a| a.options[:dependent] == :destroy }
.map(&:name)
Sonra benim nesne üzerinde
ary
adlı derneklerin her aradı ve sonuçları toplanmıştır.
ary.select! { |a| obj.send(a).any? }
Sonra bu dernek adlarıyla tarafından döndürülen nesnelerin her biri tahrip deneyebilirsiniz:
destroy_me = obj.send(ary[0]).first
destroy_me.destroy
Ben yalnızca bir nesne yüzden vardı Bu aslında bağımlı nesneleri sadece olanlara dernek isimleri sınırlar Yukarıdakiler, yıkımın başarısız olmasına neden olmak için yeterliydi. Sonra yok etmek için başarısız nesne üzerinde hatalara bakmak olabilir:
destroy_me.errors
Ve sonunda başarısız imha neden oldu hata gördüğünü yer zaten. Oradan, sorunu çözmek için Basit Bir Programlama Maddesi (SMOP) vardı.
Durumumda, bağımlı nesne ilişkilendirmelerimden birinde çalışmayı imha etmeyi engelleyen bir before_destroy
geri çağrısı vardı. Gelecekte hata ayıklamak için bu daha basit yapmak için başarısız bir geri aramada (errors.base
hata mesajını eklemeye ek olarak) Rails günlüğüne bir hata kaydetmeye karar verdim.
Hangi Raylardasın? Lütfen Kişi modelinizi gönderin. – zeantsoi