Promuovere gli utenti a TL2 all'adesione a un gruppo - retroattivamente?

Ho modificato un gruppo esistente e impostato il valore di Livello di fiducia concesso automaticamente ai membri quando vengono aggiunti su 2, quindi tutti i membri di questo gruppo verranno invitati al Livello di fiducia 2 quando verranno aggiunti al gruppo:

Tuttavia, non aggiunge retroattivamente tutti i membri esistenti al Livello di fiducia 2 :confused:

Come posso forzare questo?

Oppure come posso aggiornare retroattivamente tutti i membri del gruppo al TL2? :thinking:

3 Mi Piace

:warning: Questa soluzione è avanzata. Il comando Rails può essere eseguito solo se si dispone dell’accesso SSH al server e dovrebbe essere evitato se non si è sicuri di ciò che si sta facendo. In ogni caso, eseguire sempre un backup prima.


Ciao Richie :slight_smile:
Puoi usare uno script rails simile a questo:
Dovrebbe funzionare dalla 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

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

3 Mi Piace

Grazie @Canapin

Non ho familiaritĂ  con la console di Rails, ma ho eseguito quello che hai postato qui e ora si trova su END e mi lampeggia un cursore:

Devo confermare questo cambiamento in qualche modo? :thinking:

(non li ha promossi a TL2)

1 Mi Piace

No, è solo un output che non ha alcun effetto sull’esecuzione dello script. Credo che tu possa premere q per uscire.

Puoi anche usare questo:

Potrebbe essere correlato alla parte Group.find_by_name("test"). Non so se accetta il nome effettivo del gruppo o lo slug. :person_shrugging:


Inoltre, avrei dovuto menzionare che l’uso dei comandi rails è piuttosto avanzato e dovrebbe essere eseguito un backup prima di fare questo tipo di cose. Mi scuso per questo.

2 Mi Piace

Hmmm, è successo qualcosa di strano.

Se guardo un utente che prima dello script rails era TL1, vedo che ora è TL2 (il che è fantastico, grazie mille!)

Ma, se guardo al gruppo di utenti TL2, il numero totale di utenti nel gruppo non è aumentato :thinking:

Allo stesso modo, se cerco uno degli utenti che è stato appena aggiornato a TL2, non appare nei risultati di ricerca per il gruppo TL2:

:thinking:

Inoltre, l’utente non ha ottenuto il badge TL2:

:thinking:

1 Mi Piace

I gruppi vengono aggiornati durante un’attività Sidekiq.

L’attività è EnsureDbConsistency e può essere attivata tramite Sidekiq, se sai come farlo. Puoi anche aspettare qualche ora; i gruppi verranno aggiornati automaticamente. :slight_smile:

Ho capito in questo modo:

:slight_smile:

3 Mi Piace

Brillante, grazie!

Aspetterò pazientemente che si risolva da solo :blush:

Grazie per il tuo tempo @Canapin - e per la tua soluzione - mi hai risparmiato un sacco di tempo facendolo manualmente :scream:

1 Mi Piace

Prego.

Sono stato solo un po’ troppo veloce nel suggerire un comando rails senza un avviso adeguato, poiché può andare storto se non sappiamo davvero cosa stiamo facendo. Aggiungerò un avviso più visibile al mio post :slight_smile:

3 Mi Piace

Questo task di Rails sembra aver declassato tutti i nostri utenti TL4 e TL3 a TL2 :thinking:
Spero che il task EnsureDbConsistency li corregga automaticamente tutti durante la notte :blush:

1 Mi Piace

Lo farĂ , gli utenti TL3 verranno ripromossi presumendo che soddisfino ancora i criteri.

TL4 dovrĂ  essere promosso manualmente.

Per evitare ciò, ogni utente deve essere valutato in base all’affermazione e promosso solo se è attualmente al di sotto di TL2.

Se i tuoi utenti TL4 sono anche membri di un gruppo, potresti usarlo per promuoverli in massa.

3 Mi Piace

Ottime informazioni, grazie @Stephen Lo farò subito :slight_smile:

3 Mi Piace

Tutto sembra perfetto stamattina :blush:

Grazie ancora @Canapin e @Stephen :wave:

3 Mi Piace

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