Wie berühre ich mehrere Datensätze in ActiveRecord?

8

Ich möchte das updated_at für ein paar Datensätze aktualisieren:

%Vor%

Gibt es eine Abkürzung für diesen Zweck, sagen Sie etwas wie eine users.touch_all Methode?

    
ohho 18.10.2013, 10:30
quelle

4 Antworten

6

Nicht sicher, ob die Antwort von rhernando in älteren Versionen von Ruby funktioniert, aber das ist meiner Meinung nach eine viel klarere Methode und funktioniert in Ruby 2 +

%Vor%
  • NB. Wie in den Kommentaren erwähnt, verursacht dies N Anfragen, anstatt update_all zu verwenden, was dies in einem einzigen Befehl tun würde.
NikoRoberts 23.10.2014 04:19
quelle
4

Du kannst es so machen:

%Vor%

Hinweis: Die geschweiften Klammern sind erforderlich, andernfalls wird versucht, updated_at und id festzulegen, anstatt updated_at zu aktualisieren, wobei id in user_ids steht

Prost!

    
Luke 24.12.2014 16:07
quelle
1

Wenn Sie ActibeRelaton Datensätze berühren müssen, müssen Sie update_all method verwenden. Es berührt mehrere Datensätze in einer einzigen Transaktion:

%Vor%

Wenn Sie jedoch Array der Datensätze haben, verwenden Sie in diesem Fall nur each mit update

%Vor%

der Nachteil dieses Falles: für jedes user wird separate Transaktion sein

    
Oleg Sobchuk 03.08.2017 09:05
quelle
0

Das sollte es tun:

%Vor%     
rhernando 18.10.2013 10:33
quelle

Tags und Links