Bir dizide yorum listesi var. Update_all öğesini dizide kullanabilir miyim?Dizide update_all kullanabilir miyim?
comments = Comments.find(:all,:conditions => ["test is not null"])
comments.update_all(:test => nil)
Bir dizide yorum listesi var. Update_all öğesini dizide kullanabilir miyim?Dizide update_all kullanabilir miyim?
comments = Comments.find(:all,:conditions => ["test is not null"])
comments.update_all(:test => nil)
sen (Rails- eski sürümü bir dizi döndü -in find
veya all
) kapsamları ile çalışıyorsanız Şunları yapabilirsiniz:
comments = Comments.scoped(:conditions => "test IS NOT NULL")
comments.update_all(:test => nil)
Yakut/ActiveRecord modern versiyonları üzerine yazabilirsiniz:
Comments.where.not(test: nil).update_all(test: nil)
update_all ActiveRecord tarafından sağlanan bir yöntemdir ve ne var iki seçeneğiniz vardır, bir Array ya Yorumlar aracılığıyla ActiveRecord kullanmak (veritabanını güncelleyecek) ya da bellekte ve sadece objets değişen dizi map DÜZENLEME
comments = Comments.update_all({:test => nil}, 'test IS NOT NULL')
veya
comments = Comments.find(:all,:conditions => ["test is not null"])
comments.map! { |c| c.test = nil unless c.test}
: ikinci örnekte hata, c.test değil c
olan veritabanı değiştirerekİkinci örneğiniz veritabanındaki değişiklikleri kaydetmez (bir "c.ave" ye veya bir şeye gereksinim duyar) ve tüm yorumu yalnızca "c.test" değil "nil" olarak ayarlarsınız. –
Sorunu, veritabanındaki değişiklikleri kaydetmeyle ilgili olarak, tüm yorumun ayarlanmasıyla çözdüm, zaten cevabımın metnindeydim, soru değişikliklerin veritabanına mı yoksa yalnızca dizi ... bu yüzden iki çözüm verdim –
'Comments.update_all (" test = NULL "," test is null ")' 'nı kullanabilirsiniz. Bunun yerine – bor1s
Bunu gerçekten çabuk sormama izin verin - denediniz mi? Rails konsolu bu tür bir şeyi denemek için harika bir araçtır. – pcg79