2016-04-07 19 views
0

i ı ı tüm şirket için değerini değiştirmek için kullanabilir bir

irb(main):006:0> aplayerversion = PlayerVersion.find_by(name: "4.4") 

    Company.all.each do | comp | 
    comp.player_version = aplayerversion 
    comp.save 
    end 

i çözüm olarak bu kullanılan lütfen one.help hariç tüm şirket için değişiklik gerekiyor beklediğiniz tüm şirket için değeri değiştirmek nasıl mongoid ama

Company.all.where(:company_id.ne => "53272dee7dc8c6b77b000021").each do | comp | 
    comp.player_version = aplayerversion 
    comp.save 
    end 

cevap

1

bunun gibi şeyler için find_each kullanın .. senin tüm db RAM içine yüklenmiş olduğundan engeller çalışmaz.

Sanırım bir çözüm böyle bir şey olurdu?

Company.find_each do | comp | 
    comp.update!(player_verison: aplayerversion) unless <your_expression> 
end 

aynı kediyi yüzmenin comp.name == "excluded"

0

Birçok farklı şekillerde gibi bir ifade ile <your_expression> değiştirin. Bu bir imleç & atomik bir güncelleştirme kullanır (hiçbir geri arama tetiklenmez):

Company.where(:company_id.nin => ['53272dee7dc8c6b77b000021']).each{|l| l.set(player_version: aplayerversion) }