Discourseの個別データベースにユーザーを直接安全に追加できますか?

皆さん、こんにちは。

現在、同じ仮想マシン上で複数のDiscourseフォーラムを独立したインスタンスとして実行しています。各フォーラムは独自のPostgresデータベースを持っていますが、それらはすべてホストマシンで実行される共有スクリプトによって管理されています。

セットアップ時に初期ユーザーの作成を自動化したいと考えています。APIやCSVインポーターを使用する代わりに、次のような方法を検討しています。

:light_bulb: 各インスタンスのデータベースに直接ユーザーレコードを挿入することは可能(かつ安全)でしょうか?

スクリプトはすでにデータベースとやり取りしているため、これによりプロビジョニングプロセスを大幅に効率化できます。

直接データベースでユーザーを作成しようとした経験のある方はいらっしゃいますか?それとも、データの整合性、セッション、その他のDiscourse固有のメカニズムに関するリスクのため、これは悪い考えでしょうか?

アドバイスや経験談を共有していただけると幸いです!

「いいね!」 1

Rails で処理する方が、自分でデータベースを直接変更するよりも少し安全ですが、必要であれば自分で変更することもできます。少なくとも useruser_emails テーブルに触れる必要があり、user_ids が一致することを確認してください。

discourse/db/fixtures/009_users.rb at main · discourse/discourse · GitHub を参照し、同様にフィクスチャを追加するプラグインを作成してください(例: ./discourse-salesforce/db/fixtures/001_groups.rb)。

インポートスクリプトを例として使用することもできます。

「いいね!」 1

@pfaffman さん、ありがとうございます。大変参考になりました!

確認のためですが、この方法を検討している主な理由の1つは、CSVとAPIベースの方法の両方が、私たちがやろうとしていることに対して遅すぎるためです。私たちは多くの独立したインスタンスを起動しており、プロビジョニング中に各インスタンスにユーザーのバッチを迅速に設定する必要があります。

言及されたフィクスチャ/プラグインアプローチは、APIまたはCSVメソッドと比較して、大幅に高速なユーザー作成を可能にしますか?具体的には、セットアップ中の待ち時間を短縮したいと考えています。理想的には、初期のDBセットアップと同時に、またはほぼ瞬時に実行されるものです。

重ねてお礼申し上げます!

「いいね!」 1

データベースを直接更新する例については、一括インポートスクリプトを参照してください。インポートスクリプトにはいくらかのオーバーヘッドがあるため、フィクスチャの例の方が速いかもしれません。

ユーザーは何人追加しますか?各サイトで同じユーザーを使用しますか?