2016-04-07 4 views
0

ich dies den Wert zu ändern, um einen Wert für alle Unternehmen erwarten ändern verwenden, muss ich die Änderung für alle Unternehmen außer one.help bittemongoid wie kann ich für alle Unternehmen ein

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

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

i dies als Lösung verwendet aber es funktioniert nicht

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

Antwort

1

Bitte benutzen sie find_each für Dinge wie, dass .. verhindert, dass Ihre ganze db in Ihrem RAM geladen.

Ich denke, eine Lösung wäre so etwas?

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

ersetzen <your_expression> mit einem Ausdruck wie comp.name == "excluded"

0

viele verschiedene Möglichkeiten, um die gleiche Katze Haut. Dieser verwendet einen Cursor & eine atomare Aktualisierung (keine Rückrufe werden ausgelöst):

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