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 id
diğ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 destroy
ama sadece doğru yaklaşımı onaylamak istiyorum.
delete_all
ve 2)destroy_all
tü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.