这是一个将所有当前处于信任等级 0 或 1 的用户信任等级设置为 2 的批量操作示例:
这很慢,但会正确触发所有副作用(群组隶属关系更新、徽章授予和日志记录)。尤其是在用户少于 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)")