Bir tablodan kayıtları silmek için en iyi yaklaşımı arıyorum. Örneğin, kullanıcı kimliği birçok tabloda olan bir kullanıcı var. Bu kullanıcıyı ve tüm tablolarda kimliğini içeren her kaydı 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 çalışır ve kullanıcının tüm tablolardan tüm referansları kaldırır, ama destroy_allçok işlem ağır olduğunu duydum , bu yüzden denedim delete_all. Yalnızca kendi kullanıcı tablosundan kullanıcıyı kaldırır ve iddiğer tüm tablolardan null yapılır, ancak kayıtların içinde olduğu gibi kalır. Birisi böyle bir görevi yerine getirmek için doğru sürecin ne olduğunu paylaşabilir mi?
Tüm ilişkili nesneler üzerinde işlevi destroy_allçağırdığını görüyorum destroyama sadece doğru yaklaşımı onaylamak istiyorum.
delete_allve 2)destroy_alltüm kayıtları başlatır ve birer birer yok eder, bu nedenle çok büyük bir veri kümesinde bu acı verici bir şekilde yavaş olabilir.