投票のインポート:特定のトピックの投票数を設定するためにPostgreSQLコマンドまたはその他を使用することは可能ですか?

こんにちは。AnswerHubからDiscourseへの移行を進めています。AnswerHubのデータベースにアクセスできないため、ウェブサイト全体をスクレイピングして、アイデアとその投票数を収集しました。

Discourseで特定の質問の投票数を上書きするにはどうすればよいですか?たとえば、「make a new recipe with oranges」という質問は、AnswerHubで42票ありました。質問はインポートしましたが、デフォルトの0ではなく、投票数を42に設定したいと思います。これにより、ユーザーは各質問の正確な投票数を確認できます。

投票数を手動で設定するためにPostgreSQLコマンドを実行する方法はありますか?

質問ごとに投票数をシミュレートするために100人以上の偽のユーザーを作成する必要がありますか?それは理想的な解決策ではないので、そうではないことを願っています :stuck_out_tongue:

よろしくお願いします。

:slight_smile:

「いいね!」 1

こんにちは、Luicidさん!

:warning: 私は専門家ではなく、このプラグインを使ったこともありません :upside_down_face:

これは素晴らしい質問ですが、正確にお答えすることはできません。しかし、コーディングについて少しご存知のようですので(ゼロから移行されているとのことなので)、いくつかヒントを提供できるかもしれません。

投票プラグインは2つのテーブルを使用します。

discourse_voting_topic_vote_count

フィールド名 タイプ 制約
id シリアル 主キー
topic_id 整数 外部キー(トピックを参照)、NULLを許可
votes_count 整数 NULLを許可
created_at タイムスタンプ
updated_at タイムスタンプ

discourse_voting_votes

フィールド名 タイプ 制約
id シリアル 主キー
topic_id 整数 外部キー(トピックを参照)、NULLを許可
user_id 整数 外部キー(ユーザーを参照)、NULLを許可
archive ブール値 NULLを許可、デフォルトfalse
created_at タイムスタンプ
updated_at タイムスタンプ

プラグインの設定にも興味があるかもしれませんが、それはすでに把握されていると思います :slight_smile:

最後に、トピックの投票はカテゴリごとに有効にする必要があるため、インポートスクリプトでカテゴリを作成する際に有効にすることをお勧めします。

移行中にトピックの投票を適切に設定する方法については、専門家ではありませんが、各投票にランダムでユニークなユーザーを使用すると思います。ジョブが同じユーザーからの複数の投票を防ぎ、重複する投票を削除するためです。
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

これが少しでもお役に立てば幸いです。どのように進んだか共有していただけると嬉しいです :slight_smile:

「いいね!」 1

素晴らしい、この素晴らしい、役立つ投稿をありがとうございます!:slight_smile:
私は別の方法を選択することにしました:

元のウェブサイトでは、誰が何に投票したかのデータを取得できたので、その情報をデータベースに保存しました。その後、requestsライブラリを使用したPythonスクリプトを使用して、移行されたアカウントからすでに投票したアイデアに投票させました。そして、うまくいきました!

改めて感謝します。

「いいね!」 1