Luicid
(Luicid)
1
您好,我正在从 AnswerHub 迁移到 Discourse。但是,由于我无法访问 AnswerHub 数据库,因此我抓取了整个网站来收集 Ideas 及其各自的投票数。
如何在 Discourse 中覆盖特定问题的投票数?例如,问题“用橙子制作新食谱”在我的 AnswerHub 上有 42 票。我已经导入了该问题,但我希望将其投票数设置为 42,而不是默认的 0。这样,用户就可以看到每个问题的准确投票数。
是否有办法执行 PostgreSQL 命令来手动设置投票数?
我需要创建 100 多个虚假用户来模拟每个问题的投票数吗?我希望不是这样,因为那不是一个理想的解决方案 
提前感谢您的帮助。

1 个赞
Canapin
(Coin-coin le Canapin)
2
你好 Luicid!
我不是专家,也从未使用过这个插件 
这是一个很好的问题,恐怕我无法给出确切的答案,但也许我可以提供一些建议,因为你似乎对编码有所了解(既然你要从头开始迁移)。
投票插件使用 2 个表:
discourse_voting_topic_vote_count
| 字段名 |
类型 |
约束 |
| id |
序列 |
主键 |
| topic_id |
整型 |
外键(引用 topics),可为空 |
| votes_count |
整型 |
可为空 |
| created_at |
时间戳 |
|
| updated_at |
时间戳 |
|
discourse_voting_votes
| 字段名 |
类型 |
约束 |
| id |
序列 |
主键 |
| topic_id |
整型 |
外键(引用 topics),可为空 |
| user_id |
整型 |
外键(引用 users),可为空 |
| archive |
布尔型 |
可为空,默认为 false |
| created_at |
时间戳 |
|
| updated_at |
时间戳 |
|
你可能也对插件的设置感兴趣,但我猜你已经知道了 
最后,主题投票必须在每个类别中启用,所以我会在导入脚本中创建类别时启用它们。
至于如何正确地在迁移过程中填充主题中的投票,我不是专家,但我想我会为每次投票使用随机的、唯一的用户,因为有一个作业可以防止同一用户多次投票,并且会删除重复的投票:
https://github.com/discourse/discourse-topic-voting/blob/main/app/jobs/onceoff/voting_ensure_consistency.rb#L28
我将填充必要的字段(待定),并让作业填充其他字段(如果存在的话)。
你可能还想看看所有的插件作业 discourse-topic-voting/app/jobs at main · discourse/discourse-topic-voting · GitHub
希望这能帮到你,也希望你能分享一下进展 
1 个赞
Luicid
(Luicid)
3
太棒了,感谢您这篇很棒且有帮助的帖子!
我决定采用另一种方法:
在我原来的网站上,我能够检索出谁为哪个投票的数据,所以我将这些信息存储在数据库中。之后,我使用带有 requests 库的 Python 脚本,为他们已经投票过的想法,从他们迁移的账户进行投票,然后就搞定了!
再次感谢您
1 个赞