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)")