Modifier le niveau de confiance pour tous les utilisateurs

Voici un exemple d’ opération en masse pour définir le niveau de confiance à 2 pour tous les utilisateurs actuellement au niveau de confiance 0 ou 1 :

Ceci est lent, mais déclenche correctement tous les effets secondaires (mises à jour de l’appartenance aux groupes, octroi de badges et journalisation). Cela peut être préférable surtout lorsque vous avez moins de 1000 utilisateurs. Remarque : cela ne saute pas les utilisateurs avec des niveaux de confiance verrouillés manuellement — ajoutez .where(manual_locked_trust_level: nil) à la requête si vous souhaitez les ignorer.

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

S’il y avait plus de 1000 utilisateurs, j’aurais utilisé ceci à la place, mais cela contourne tous les effets secondaires (mises à jour de groupe, badges, journalisation) et ne respecte pas les niveaux de confiance verrouillés.

DB.exec("UPDATE users SET trust_level = 2 WHERE trust_level IN (0, 1)")
22 « J'aime »