تعديل مستوى الثقة لجميع المستخدمين

إليك مثال على عملية مجمعة لتعيين مستوى الثقة إلى 2 لجميع المستخدمين الذين هم حاليًا في مستوى الثقة 0 أو 1:

هذا بطيء، ولكنه يقوم بتشغيل جميع الآثار الجانبية بشكل صحيح (تحديثات العضوية في المجموعات، ومنح الشارات، والتسجيل). قد يُفضل هذا خاصة عندما يكون لديك أقل من 1000 مستخدم. ملاحظة: هذا لا يتخطى المستخدمين ذوي مستويات الثقة المقفلة يدويًا — أضف .where(manual_locked_trust_level: nil) إلى الاستعلام إذا كنت تريد تخطيهم.

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

إذا كان هناك أكثر من 1000 مستخدم، كنت سأستخدم هذا بدلاً من ذلك، ولكنه يتجاوز جميع الآثار الجانبية (تحديثات المجموعة، والشارات، والتسجيل) ولا يحترم مستويات الثقة المقفلة.

DB.exec("UPDATE users SET trust_level = 2 WHERE trust_level IN (0, 1)")
22 إعجابًا