Vertrauensstufe für alle Benutzer ändern

Hier ist ein Beispiel für eine Massenoperation, um die Vertrauensstufe für alle Benutzer, die derzeit die Vertrauensstufe 0 oder 1 haben, auf 2 festzulegen:

Dies ist langsam, löst aber ordnungsgemäß alle Nebeneffekte aus (Aktualisierungen der Gruppenmitgliedschaft, Verleihungen von Abzeichen und Protokollierung). Es kann bevorzugt werden, insbesondere wenn Sie weniger als 1000 Benutzer haben. Hinweis: Dies überspringt keine Benutzer mit manuell gesperrten Vertrauensstufen – fügen Sie .where(manual_locked_trust_level: nil) zur Abfrage hinzu, wenn Sie diese überspringen möchten.

User.where(trust_level: [0, 1]).find_each do |user|
   user.change_trust_level!(TrustLevel[2])
end

Wenn es mehr als 1000 Benutzer gäbe, hätte ich stattdessen diese verwendet, aber diese umgeht alle Nebeneffekte (Gruppenaktualisierungen, Abzeichen, Protokollierung) und berücksichtigt keine gesperrten Vertrauensstufen.

DB.exec("UPDATE users SET trust_level = 2 WHERE trust_level IN (0, 1)")
22 „Gefällt mir“