加入群组时将用户提升到TL2 - 回顾性地?

我已经修改了一个现有组,并将“添加成员时自动授予成员的信任级别”值设置为 2,因此该组的所有成员在被添加到该组时都将被提示信任级别 2:

但是,这并不会追溯性地将所有现有组成员添加到信任级别 2 :/\n\n我该如何强制执行此操作?\n\n或者,我该如何追溯性地将该组的所有成员升级到 TL2? :thinking:

3 个赞

:warning: 此解决方案较为高级。只有在您拥有服务器的 SSH 访问权限时才能执行 Rails 命令,如果您不确定自己在做什么,请避免使用。无论如何,务必先进行备份。


你好 Richie :slight_smile:
您可以使用类似以下的 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 :slight_smile:

3 个赞

感谢 @Canapin

我完全不熟悉 rails 控制台,但我运行了你在这里发布的命令,它现在停留在 END 并闪烁着光标:

我需要以某种方式提交这个更改吗?:thinking:

(它还没有将他们提升到 TL2)

1 个赞

不,那只是一个不会对脚本执行产生任何影响的输出。我认为你可以按 q 键退出。

你也可以使用这个:

这可能与 Group.find_by_name("test") 部分有关。我不知道它接受的是实际的组名还是 slug。 :person_shrugging:


另外,我应该提到使用 rails 命令是相当高级的操作,在进行此类操作之前应先进行备份。对此我感到抱歉。

2 个赞

嗯,发生了一些奇怪的事情。

如果我查看在运行此 rails 脚本之前是 TL1 的用户,我会看到他们现在是 TL2(这很棒,非常感谢你!)

但是,如果我查看 TL2 用户组,该组中的用户总数没有增加 :thinking:

同样,如果我搜索刚刚升级到 TL2 的用户之一,他们在 TL2 组的搜索结果中不会出现:

:thinking:

此外,该用户还没有获得 TL2 徽章:

:thinking:

1 个赞

组会在 Sidekiq 作业期间更新。

该任务是 EnsureDbConsistency,可以通过 Sidekiq 触发,如果你知道如何操作的话。你也可以等待几个小时;组会自动更新。:slight_smile:

我在下面找到了解决方法:

:slight_smile:

3 个赞

太棒了,谢谢!

我会耐心等待它自行解决 :blush:

感谢您的时间和 @Canapin - 以及您的解决方案 - 您手动完成这项工作为我节省了大量时间 :scream:

1 个赞

不客气。

我只是太快建议了一个 Rails 命令,而没有给出适当的警告,因为它可能会在我们不真正了解我们在做什么时出错。我会在我的帖子中添加一个更明显的警告 :slight_smile:

3 个赞

这个 rails 任务似乎已将我们所有的 TL4 和 TL3 用户降级为 TL2 :thinking:
我希望 EnsureDbConsistency 任务能在今晚自动修复它们 :blush:

1 个赞

TL3 用户仍将获得晋升,前提是他们仍符合条件。

TL4 用户需要手动晋升。

为避免这种情况,需要由声明评估每位用户,并且仅当他们当前低于 TL2 时才晋升。

如果您的 TL4 用户也是某个群组的成员,您可以使用该群组来批量晋升他们。

3 个赞

很棒的信息,谢谢 @Stephen 我现在就去办 :slight_smile:

3 个赞

今天早上一切看起来都很棒 :blush:

再次感谢 @Canapin@Stephen :wave:

3 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.