2017-06-13 2 views
1

Ich möchte mehrere Zeilen mit einer einzigen Abfrage des aktiven Datensatzes aktualisieren. Ich muss update_all nicht verwenden, da die Validierung übersprungen wird. Gibt es eine Möglichkeit, dies in Schienen aktiven Rekord zu tun.Massenaktualisierung in Schienen ohne Verwendung von update_all mit einer einzigen Abfrage?

+1

Sie können dies nicht auf einer einzigen Abfrage, weil Validierungen auf eine Instanz des Modells angewendet werden .. nicht auf die Sammlung .. Sie können Schleife durch alle Elemente und führen Sie 'update_attributes' in einem begin-Block und retten, wenn die Validierung fehlschlägt – sa77

Antwort

0

Es klingt wie Sie suchen Update records - aus der Dokumentation Mehrere Datensätze aktualisieren; verschiedene col mit unterschiedlichen Daten

Sie mögen dieses Beispiel tun können:

people = { 1 => { "first_name" => "David" }, 2 => { "first_name" => "Jeremy" } } 
Person.update(people.keys, people.values) 
+0

Aber für jeden Datensatz wird es eine separate Update-Abfrage auslösen, so was ich will ist, dass es nur eine Abfrage für alle Updates ausgelöst werden soll. –

+0

Nein, Dies wird nur eine Abfrage für alle Ihre Datensätze auslösen. 'Person.update (people.keys, people.values)' –

+0

@RahulOjha Wenn Sie mit meinem ans zufrieden sind, dann machen Sie es richtig und stimmen Sie ab –

Verwandte Themen