emonunix
(Emon Bhuiyan)
1
大家好,
我们正在同一台虚拟机上运行多个独立的 Discourse 论坛实例。每个论坛都有自己独立的 Postgres 数据库,但它们都由运行在宿主机上的共享脚本进行管理。
我们希望在设置过程中自动化初始用户的创建。与其使用 API 或 CSV 导入器,我们想知道:
是否可以(并且安全地)直接将用户记录插入到每个实例的数据库中?
由于我们的脚本已经与数据库交互,这可以大大简化配置过程。
是否有人尝试过直接在数据库中创建用户?或者由于数据完整性、会话或其他 Discourse 特定机制的风险,这是个坏主意?
感谢您分享任何建议或经验!
1 个赞
pfaffman
(Jay Pfaffman)
3
让 Rails 来处理会更安全一些,而不是自己修改数据库,但如果你愿意,也可以自己来做。请注意,你至少需要操作 user 和 user_emails 这两张表,并确保 user_ids 匹配。
可以参考一下 discourse/db/fixtures/009_users.rb at main · discourse/discourse · GitHub ,然后创建一个插件,类似地添加一个 fixture(也许是 ./discourse-salesforce/db/fixtures/001_groups.rb)。
你也可以参考一个导入脚本作为例子。
1 个赞
emonunix
(Emon Bhuiyan)
4
感谢 @pfaffman — 非常感谢您的指导!
只是为了澄清:我们之所以探索这条路线,主要原因之一是 CSV 和基于 API 的方法对于我们正在做的事情来说太慢了。我们正在启动许多独立的实例,并且需要在配置过程中快速地为每个实例填充一批用户。
您提到的 fixtures/plugin 方法是否能比 API 或 CSV 方法更快地创建用户?具体来说,我们希望减少设置期间的等待时间——最好是在初始数据库设置的同时即时或近乎即时地执行。
再次感谢!
1 个赞
pfaffman
(Jay Pfaffman)
5
您可以查看批量导入脚本,了解直接更新数据库的示例。导入脚本确实有一些开销,所以也许固定装置中的示例会更快一些?
您要添加多少用户?每个站点都有相同的用户吗?