我已经修改了一个现有组,并将“添加成员时自动授予成员的信任级别”值设置为 2,因此该组的所有成员在被添加到该组时都将被提示信任级别 2:
但是,这并不会追溯性地将所有现有组成员添加到信任级别 2 :/\n\n我该如何强制执行此操作?\n\n或者,我该如何追溯性地将该组的所有成员升级到 TL2? ![]()
我已经修改了一个现有组,并将“添加成员时自动授予成员的信任级别”值设置为 2,因此该组的所有成员在被添加到该组时都将被提示信任级别 2:
但是,这并不会追溯性地将所有现有组成员添加到信任级别 2 :/\n\n我该如何强制执行此操作?\n\n或者,我该如何追溯性地将该组的所有成员升级到 TL2? ![]()
此解决方案较为高级。只有在您拥有服务器的 SSH 访问权限时才能执行 Rails 命令,如果您不确定自己在做什么,请避免使用。无论如何,务必先进行备份。
你好 Richie ![]()
您可以使用类似以下的 Rails 脚本:
这应该可以在 Rails 控制台中完成:
target_group = Group.find_by_name("test")
users = User.joins(:group_users).where(group_users:{group_id: target_group.id})
users.each do |u|
u.trust_level = 2
u.save
end
感谢 @nathank 提供的 Delete all users not in a specific group - #2 by nathank ![]()
不,那只是一个不会对脚本执行产生任何影响的输出。我认为你可以按 q 键退出。
你也可以使用这个:
这可能与 Group.find_by_name("test") 部分有关。我不知道它接受的是实际的组名还是 slug。 ![]()
另外,我应该提到使用 rails 命令是相当高级的操作,在进行此类操作之前应先进行备份。对此我感到抱歉。
嗯,发生了一些奇怪的事情。
如果我查看在运行此 rails 脚本之前是 TL1 的用户,我会看到他们现在是 TL2(这很棒,非常感谢你!)
但是,如果我查看 TL2 用户组,该组中的用户总数没有增加 ![]()
同样,如果我搜索刚刚升级到 TL2 的用户之一,他们在 TL2 组的搜索结果中不会出现:
![]()
此外,该用户还没有获得 TL2 徽章:
![]()
组会在 Sidekiq 作业期间更新。
该任务是 EnsureDbConsistency,可以通过 Sidekiq 触发,如果你知道如何操作的话。你也可以等待几个小时;组会自动更新。![]()
我在下面找到了解决方法:
![]()
不客气。
我只是太快建议了一个 Rails 命令,而没有给出适当的警告,因为它可能会在我们不真正了解我们在做什么时出错。我会在我的帖子中添加一个更明显的警告 ![]()
这个 rails 任务似乎已将我们所有的 TL4 和 TL3 用户降级为 TL2 ![]()
我希望 EnsureDbConsistency 任务能在今晚自动修复它们 ![]()
TL3 用户仍将获得晋升,前提是他们仍符合条件。
TL4 用户需要手动晋升。
为避免这种情况,需要由声明评估每位用户,并且仅当他们当前低于 TL2 时才晋升。
如果您的 TL4 用户也是某个群组的成员,您可以使用该群组来批量晋升他们。
很棒的信息,谢谢 @Stephen 我现在就去办 ![]()
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.