vs destroy_all delete_all?
En iyi yaklaşım için bir tablodan kayıtları silmek için arıyorum. Örneğin, birçok tablolar arasında olan bir kullanıcı var. Bu kullanıcı ve tüm tablolar kendi KİMLİĞİ olan tüm kayıtları silmek istiyorum.
u = User.find_by_name('JohnBoy')
u.usage_indexes.destroy_all
u.sources.destroy_all
u.user_stats.destroy_all
u.delete
Bu ve tüm tablolardan kullanıcının tüm başvuruları kaldırır çalışır, ama destroy_all
süreç ağır olduğunu çok duydum, delete_all
çalıştım. Sadece kendi kullanıcı tablosundan kullanıcı kaldırır ve diğer tablolar id
null yapılır, ama bu kayıtları onlara dokunmaz. Birisi doğru süreç böyle bir işi yapmak için ne paylaşabilir?
destroy_all
tüm ilişkili nesneleri destroy
işlevini çağıran görüyorum ama ben sadece doğru yaklaşımı teyit etmek istiyorum.
CEVAP
Haklısın. Eğer Kullanıcı ve tüm ilişkili nesneleri silmek istiyorsanız ->:destroy_all Eğer sadece tüm ilişkili nesneleri - ^ bastırmak olmadan Kullanıcıyı silmek istiyorsanız ancak . delete_all
Bu yazıya göre : Rails :dependent => :destroy VS :dependent => :delete_all
- :/: destroy_all ilişkili nesneler kendi yok çağırarak, bu nesne ile birlikte imha edilir imha yöntemi
- :/: delete_all Tüm ilişkili nesneleri sil hemen haber vermeden yok olurlar :yöntem yok
Raylar :bağımlı => :VS yok: => ba...