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:

3 curtidas

: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:

3 curtidas

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)

1 curtida

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.

2 curtidas

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:

1 curtida

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:

3 curtidas

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:

1 curtida

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:

3 curtidas

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:

1 curtida

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.

3 curtidas

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

3 curtidas

Tudo parece ótimo esta manhã :blush:

Obrigado novamente @Canapin e @Stephen :wave:

3 curtidas

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