Promover usuários para TL2 ao ingressar em um grupo - retroativamente?

Modifiquei um grupo existente e defini o valor de Nível de confiança concedido automaticamente aos membros quando são adicionados para 2, para que todos os membros deste grupo sejam promovidos para o Nível de Confiança 2 quando adicionados ao grupo:

No entanto, isso não adiciona retroativamente todos os membros existentes do grupo ao Nível de Confiança 2 :confused:

Como posso forçar isso a ocorrer?

Ou como posso promover retroativamente todos os membros do grupo para o TL2? :thinking:

:warning: Esta solução é avançada. O comando Rails só pode ser executado se você tiver acesso SSH ao seu servidor e deve ser evitado se você não tiver certeza do que está fazendo. Em qualquer caso, sempre faça um backup primeiro.


Olá Richie :slight_smile:

Você pode usar um script rails semelhante a este:

Isso deve funcionar no console 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

Obrigado @nathank por Delete all users not in a specific group - #2 by nathank :slight_smile:

Obrigado @Canapin

Não estou familiarizado com o console do Rails, mas executei o que você postou aqui e agora ele está em END e piscando um cursor para mim:

Preciso confirmar essa alteração de alguma forma? :thinking:

(ele não os promoveu para TL2)

Não, essa é apenas uma saída que não tem efeito na execução do script. Acredito que você possa pressionar q para sair.

Você também pode usar isto:

Pode estar relacionado à parte Group.find_by_name("test"). Não sei se aceita o nome real do grupo ou o slug. :person_shrugging:


Além disso, eu deveria ter mencionado que usar comandos do rails é bastante avançado e um backup deve ser feito antes de fazer esse tipo de coisa. Peço desculpas por isso.

Hmmm, algo estranho aconteceu.

Se eu olhar para um usuário que era TL1 antes de executar este script rails, vejo que ele agora é TL2 (o que é ótimo, muito obrigado!)

Mas, se eu olhar para o grupo de usuários TL2, o número total de usuários no grupo não aumentou :thinking:

Da mesma forma, se eu procurar por um dos usuários que acabaram de ser promovidos para TL2, eles não aparecem nos resultados da pesquisa para o grupo TL2:

:thinking:

Além disso, o usuário não ganhou o distintivo TL2:

:thinking:

Os grupos são atualizados durante um job do Sidekiq.

A tarefa é EnsureDbConsistency e pode ser acionada através do Sidekiq, se você souber como fazer isso. Você também pode esperar algumas horas; os grupos serão atualizados automaticamente. :slight_smile:

Eu descobri isso aqui:

:slight_smile:

Brilhante, obrigado!

Vou esperar pacientemente que se resolva sozinho :blush:

Obrigado pelo seu tempo @Canapin - e pela sua solução - você me economizou muito tempo fazendo isso manualmente :scream:

De nada.

Eu fui apenas um pouco rápido demais ao sugerir um comando do rails sem o aviso adequado, pois pode dar errado se não soubermos realmente o que estamos fazendo. Adicionarei um aviso mais visível à minha postagem :slight_smile:

Esta tarefa do Rails parece ter rebaixado todos os nossos usuários TL4 e TL3 para TL2 :thinking:

Espero que a tarefa EnsureDbConsistency os corrija automaticamente durante a noite :blush:

Ele o fará, os usuários TL3 serão promovidos novamente, assumindo que ainda atendam aos critérios.

TL4 precisará ser promovido manualmente.

Para evitar isso, cada usuário precisa ser avaliado pela declaração e promovido apenas se estiver atualmente abaixo do TL2.

Se seus usuários TL4 também forem membros de um grupo, você poderá usá-lo para promovê-los em massa.

Ótima informação, obrigado @Stephen Farei isso agora :slight_smile:

Tudo parece ótimo esta manhã :blush:

Obrigado novamente @Canapin e @Stephen :wave: