Benutzer beim Beitritt zu einer Gruppe auf TL2 befördern – rückwirkend?

Ich habe eine bestehende Gruppe geändert und den Wert Vertrauensstufe, die Mitgliedern automatisch gewährt wird, wenn sie hinzugefügt werden auf 2 gesetzt, sodass alle Mitglieder dieser Gruppe bei Hinzufügung zur Gruppe aufgefordert werden, Vertrauensstufe 2 zu erreichen:

Dies fügt jedoch nicht rückwirkend alle vorhandenen Gruppenmitglieder zur Vertrauensstufe 2 hinzu :confused:

Wie kann ich dies erzwingen?

Oder wie kann ich alle Mitglieder der Gruppe rückwirkend auf TL2 upgraden? :thinking:

3 „Gefällt mir“

:warning: Diese Lösung ist fortgeschritten. Rails-Befehle können nur ausgeführt werden, wenn Sie SSH-Zugriff auf Ihren Server haben und sollten vermieden werden, wenn Sie sich nicht sicher sind, was Sie tun. Sichern Sie in jedem Fall immer zuerst Ihre Daten.


Hallo Richie :slight_smile:
Sie können ein Rails-Skript ähnlich diesem verwenden:
Das sollte von der Rails-Konsole aus funktionieren:

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

Danke @nathank für Delete all users not in a specific group - #2 by nathank :slight_smile:

3 „Gefällt mir“

Danke @Canapin

Ich bin überhaupt nicht mit der Rails-Konsole vertraut, aber ich habe ausgeführt, was du hier gepostet hast, und sie hängt jetzt bei END und blinkt mit einem Cursor vor mir:

Muss ich diese Änderung irgendwie committen? :thinking:

(sie hat sie nicht zu TL2 befördert)

1 „Gefällt mir“

Nein, das ist nur eine Ausgabe, die keine Auswirkungen auf die Skriptausführung hat. Ich glaube, Sie können \u003ckbd\u003eq\u003c/kbd\u003e drücken, um sie zu verlassen.

Sie können auch dies verwenden:

Es könnte mit dem Teil Group.find_by_name("test") zusammenhängen. Ich weiß nicht, ob es den tatsächlichen Gruppennamen oder den Slug akzeptiert. :person_shrugging:


Außerdem hätte ich erwähnen sollen, dass die Verwendung von Rails-Befehlen ziemlich fortgeschritten ist und vor solchen Dingen ein Backup erstellt werden sollte. Das tut mir leid.

2 „Gefällt mir“

Hmmm, etwas Seltsames ist passiert.

Wenn ich mir einen Benutzer ansehe, der vor der Ausführung dieses Rails-Skripts TL1 war, sehe ich, dass er jetzt TL2 ist (was großartig ist, vielen Dank!)

Aber wenn ich mir die TL2-Benutzergruppe ansehe, ist die Gesamtzahl der Benutzer in der Gruppe nicht gestiegen :thinking:

Ebenso erscheinen sie nicht in den Suchergebnissen für die TL2-Gruppe, wenn ich nach einem der Benutzer suche, die gerade zu TL2 befördert wurden:

:thinking:

Außerdem hat der Benutzer das TL2-Abzeichen nicht erhalten:

:thinking:

1 „Gefällt mir“

Die Gruppen werden während eines Sidekiq-Jobs aktualisiert.

Die Aufgabe ist EnsureDbConsistency und kann über Sidekiq ausgelöst werden, wenn Sie wissen, wie es geht. Sie können auch ein paar Stunden warten; die Gruppen werden automatisch aktualisiert. :slight_smile:

Ich habe es hier herausgefunden:

:slight_smile:

3 „Gefällt mir“

Brillant, danke!

Ich werde geduldig darauf warten, dass es sich von selbst löst :blush:

Danke für deine Zeit @Canapin - und deine Lösung - du hast mir eine Menge Zeit gespart, indem du das manuell gemacht hast :scream:

1 „Gefällt mir“

Gern geschehen.

Ich war nur ein wenig zu schnell damit, einen Rails-Befehl vorzuschlagen, ohne eine ordnungsgemäße Warnung auszusprechen, da dies schiefgehen kann, wenn wir nicht wirklich wissen, was wir tun. Ich werde meiner Veröffentlichung eine deutlichere Warnung hinzufügen :slight_smile:

3 „Gefällt mir“

Diese Rails-Aufgabe scheint alle unsere TL4- und TL3-Benutzer auf TL2 herabgestuft zu haben :thinking:

Ich hoffe, die Aufgabe EnsureDbConsistency wird sie alle über Nacht automatisch reparieren :blush:

1 „Gefällt mir“

Es wird so sein, die TL3-Benutzer werden erneut befördert, vorausgesetzt, sie erfüllen weiterhin die Kriterien.

TL4 muss manuell befördert werden.

Um dies zu vermeiden, muss jeder Benutzer anhand der Aussage bewertet werden und nur befördert werden, wenn er derzeit unter TL2 liegt.

Wenn Ihre TL4-Benutzer auch Mitglieder einer Gruppe sind, könnten Sie diese verwenden, um sie en masse zu befördern.

3 „Gefällt mir“

Tolle Info, danke @Stephen. Ich mache das jetzt :slight_smile:

3 „Gefällt mir“

Alles sieht heute Morgen rosig aus :blush:

Nochmal danke @Canapin und @Stephen :wave:

3 „Gefällt mir“

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