uckelman
(Joel Uckelman)
1
我手头有我们旧新闻源的 JSON 归档,想用它来填充新论坛的“新闻”分类;新闻源中的所有帖子都是由已经拥有论坛账号的用户发布的。最直接的方法似乎是修改通用的 JSON 导入器,使其通过用户名或电子邮件地址查找现有用户,而不是创建新用户。
看起来,我可以在输入 JSON 中提供一个空的 users 列表,以避免创建任何新用户,然后修改 /srcipts/import_scripts/json_generic.rb 中为每篇帖子设置用户 ID 的那一行:
user_id: user_id_from_imported_user_id(username_for(first_post["author"])) || -1
因此,我需要将该键值对的值替换为能够获取现有用户 ID 的内容,而不是查找由导入器之前创建的用户 ID。
如何根据用户名或电子邮件地址查找_现有_用户的 ID?
uckelman
(Joel Uckelman)
3
我意识到可以通过 JSON API 查找用户,但既然我是在 Ruby 环境中(Discourse 本身也是用 Ruby 运行的),直接调用所需函数是否比折腾 JSON API 调用更直接?这真的是推荐的做法吗?我在查看过的导入器代码中,并没有看到其他地方使用 JSON API。
j127
4
自从我导入 Discourse 以来已经很久了,所以我不太确定,但也许其他人知道。我有时需要批量通过电子邮件和 ID 查找用户,因此我一直在使用 API。
uckelman
(Joel Uckelman)
5
我原本寻找的其实是这个:
User.find_by_username(username)&.id