Können wir Benutzer sicher direkt in separate Discourse-Datenbanken einfügen?

Hallo zusammen,

wir betreiben mehrere Discourse-Foren als isolierte Instanzen auf derselben virtuellen Maschine. Jedes Forum hat seine eigene separate Postgres-Datenbank, aber sie werden alle von einem gemeinsamen Skript verwaltet, das auf dem Host läuft.

Wir möchten die Erstellung von initialen Benutzern während der Einrichtung automatisieren. Anstatt die API oder den CSV-Importeur zu verwenden, fragen wir uns:

:light_bulb: Ist es möglich (und sicher), Benutzerdatensätze direkt in die Datenbank jeder Instanz einzufügen?

Da unser Skript bereits mit den Datenbanken interagiert, könnte dies den Bereitstellungsprozess erheblich vereinfachen.

Hat jemand schon einmal versucht, Benutzer direkt in die Datenbank einzufügen? Oder ist das aufgrund von Risiken mit der Datenintegrität, Sitzungen oder anderen Discourse-spezifischen Mechanismen eine schlechte Idee?

Wir freuen uns über jeden Rat oder jede Erfahrung, die Sie teilen können!

1 „Gefällt mir“

Es ist etwas sicherer, wenn Rails dies tut, als wenn Sie die Datenbank selbst ändern, aber Sie können es tun, wenn Sie möchten. Beachten Sie, dass Sie mindestens die Tabellen user und user_emails berühren müssen und sicherstellen müssen, dass die user_ids übereinstimmen.

Schauen Sie sich discourse/db/fixtures/009_users.rb at main · discourse/discourse · GitHub an und erstellen Sie dann ein Plugin, das auf ähnliche Weise eine Fixture hinzufügt (vielleicht ./discourse-salesforce/db/fixtures/001_groups.rb).

Sie könnten auch ein Importskript als Beispiel verwenden.

1 „Gefällt mir“

Vielen Dank, @pfaffman – ich weiß die Anleitung wirklich zu schätzen!

Nur zur Klarstellung: Einer der Hauptgründe, warum wir diesen Weg erkunden, ist, dass sowohl die CSV- als auch die API-basierten Methoden für das, was wir tun wollen, zu langsam sind. Wir starten viele isolierte Instanzen und müssen jede davon während der Bereitstellung schnell mit einer Charge von Benutzern bestücken.

Würde der von Ihnen erwähnte Fixtures/Plugin-Ansatz eine signifikant schnellere Benutzererstellung im Vergleich zu den API- oder CSV-Methoden ermöglichen? Insbesondere hoffen wir, die Wartezeit während der Einrichtung zu verkürzen – idealerweise etwas, das sofort oder nahezu sofort zusammen mit der anfänglichen Datenbankeinrichtung ausgeführt wird.

Nochmals vielen Dank!

1 „Gefällt mir“

Sie können sich die Skripte für den Massenimport ansehen, um Beispiele für die direkte Aktualisierung der Datenbank zu erhalten. Das Importskript hat zwar einen gewissen Mehraufwand, aber vielleicht ist das Beispiel in den Fixtures schneller?

Wie viele Benutzer fügen Sie hinzu? Haben Sie für jede Website dieselben Benutzer?