5

Şu anki Rails3 projemde bir ihracatçı yazıyorum. Bu ihracatçı, ihraç edilen her kaydı "ihraç" (bool) olarak işaretlemelidir. Bunu bir döngü içinde nasıl kolayca yapacağımı biliyorum ama dürüstçe, Rails'in 300 kayıtta bir alan oluşturmak için 300 kez üst üste sorgulamasını sağlamak çok da iyi değil.Birden çok kayıtta tek bir özniteliğin güncellenmesi için en iyi yöntem

Bunu optimize etmenin iyi bir yolu olup olmadığını bilen var mı? Hazırlanan ifadelerle el ile oynamalı mıyım yoksa Rails3 bunu otomatik olarak halleder mi? Bunu bir adımda yapmak için başka bir SQL komutu var mı? Yardımlarınız Class üzerinde

  • Arne

cevap

15

Kullanım update_all yöntem için

teşekkürler. Rails API Gönderen:

# Update all books with 'Rails' in their title 
Book.update_all "author = 'David'", "title LIKE '%Rails%'" 
+0

Hey, teşekkürler. Bunu API dokümanlarında görmeliydim. Tam olarak aradığım şey gibi görünüyor! – arnekolja

+0

Veritabanını doğrudan güncellediği ve "update_column" gibi onaylara veya geri çağrılara isabet etmediği için buna dikkat edin. –

5

ActiveRecord 4.0 kullanımdan kaldırıldı bu şekilde (Rails API), aynı yapmanın geçerli yolu beri şudur: Bu beni işaret için

# Update all books with 'Rails' in their title 
Book.where('title LIKE ?', '%Rails%').update_all(author: 'David') 
İlgili konular