ترقية المستخدمين إلى TL2 عند الانضمام إلى مجموعة - بأثر رجعي؟

I’ve modified an existing group and set the Trust level automatically granted to members when they're added value to be 2, so all members of this group will be prompted to Trust Level 2 when added to the group:

However, it doesn’t retrospectively add all the existing group members to Trust Level 2 :confused:

How can I force this to occur?

Or how can I retrospectively upgrade all the members of the group up to TL2? :thinking:

3 إعجابات

:warning: This solution is advanced. Rails command can be only done if you have SSH access to your server and should be avoided if you’re not sure of what you’re doing. In any case, always do a backup first.


Hello Richie :slight_smile:

You can use a rails script similar to this:

That should do it from the rails console:

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

Thanks @nathank for Delete all users not in a specific group - #2 by nathankershaw :slight_smile:

3 إعجابات

Thanks @Canapin

I’m not familiar with the rails console at all, but I ran what you posted here and it’s now sitting on END and flashing a cursor at me:

Do I need to commit this change somehow? :thinking:

(it has not promoted them to TL2)

إعجاب واحد (1)

No, that’s just an output that doesn’t have any effect on the script execution. I believe you can press q to leave it.

You can also use this:

It may be related to the Group.find_by_name("test") part. I don’t know if it accepts the actual group name, or slug. :person_shrugging:


Also, I should have mentioned that using rails commands is fairly advanced and a backup should be made before doing this kind of stuff. I apologize for that.

إعجابَين (2)

Hmmm, something strange has occurred.

If I look at a user which was TL1 before I ran this rails script, I can see they are now TL2 (which is great, thank you so much!)

But, if I look at the TL2 user group, the total number of users in the group has not increased :thinking:

Similarly, if I search for one of the users that was just upgraded to TL2, they do not appear in the search results for the TL2 group:

:thinking:

Also, the user has not gained the TL2 badge:

:thinking:

إعجاب واحد (1)

The groups are updated during a Sidekiq job.

The task is EnsureDbConsistency and can be triggered through Sidekiq, if you know how to do it. You can also wait a few hours; groups will be updated automatically. :slight_smile:

I figured it out this here:

:slight_smile:

3 إعجابات

Brilliant, thank you!

I shall wait patiently for it to resolve itself :blush:

Thanks for your time @Canapin - and your solution - you have saved me a mountain of time by doing this manually :scream:

إعجاب واحد (1)

You’re welcome.

I was just a bit too quick suggesting a rails command without proper warning as it can go bad if we don’t really know what we’re doing. I’ll add a more visible warning to my post :slight_smile:

3 إعجابات

This rails task appears to have downgraded all our TL4 and TL3 users, to TL2 :thinking:

I’m hoping the EnsureDbConsistency task will automatically fix them all overnight :blush:

إعجاب واحد (1)

It will, the TL3 users will be re-promoted assuming they meet the criteria still.

TL4 will need to be manually promoted.

To avoid this each user needs to be evaluated by the statement and only promoted if they’re currently below TL2.

If your TL4 users are also members of a group you could use that to promote them en-masse.

3 إعجابات

Great info, thanks @Stephen I’ll do that now :slight_smile:

3 إعجابات

Everything looks peachy this morning :blush:

Thanks again @Canapin and @Stephen :wave:

3 إعجابات

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