Discourse へのインポート中、主要な投稿が移行中に 100 件の「いいね!」を失いました(適切にスクレイピングできませんでした)。この場合、インポート スクリプトを再実行したくありません。
投稿に「いいね!」したユーザーのリストがある場合、それらを追加する最善の方法は何ですか? レークコマンドはありますか?
Discourse へのインポート中、主要な投稿が移行中に 100 件の「いいね!」を失いました(適切にスクレイピングできませんでした)。この場合、インポート スクリプトを再実行したくありません。
投稿に「いいね!」したユーザーのリストがある場合、それらを追加する最善の方法は何ですか? レークコマンドはありますか?
私がやるなら、いいねをインポートするスクリプトを見て、いいねを追加するために何をするかを確認し、それをRailsコンソールで行います。それはPostActionだと確信しています。
そのようなrakeコマンドはないと確信していますが、それはかなり珍しいリクエストだからです(ほとんどの場合、インポートスクリプトを再実行するだけです)、しかし私は調べていません。
ご回答ありがとうございます。インポートスクリプトを再実行するのは、ほぼ6ヶ月ぶりで、古いデータと新しいデータが相互作用するエッジケースでどのような副作用があるか分からないため、少し不安です。
インポートスクリプトで使用したヘルパー関数は次のとおりです。
関連するコードは次のとおりです。
created_by = User.find_by(id: user_id_from_imported_user_id(params[:user_id]))
post = Post.find_by(id: post_id_from_imported_post_id(params[:post_id]))
if created_by && post
PostActionCreator.create(created_by, post, :like, created_at: params[:created_at])
created += 1
...
これと同様のものを実行します。ありがとうございます!
私もかなり不安になるでしょう!
やったー!「まあ、私がやるなら…」のような曖昧な答えが役に立つかどうかは、決してわかりません。
レールコンソールに何かを貼り付ける場合、便利なトリックがあります。行の末尾に「;」を付けると、最後のステートメントの結果を確認するために less ページャーに移動させられることがなくなります。(適切なループを作成したり、スクリプトを実行したりする場合は、このヒントは必要ありません。)
頑張ってください!
もしこれを実行したい人がいれば、私の場合これでうまくいきました。レールコンソールを開いて、以下を実行します。
p = Post.find(31871)
u = User.find_by(username:"xxx")
PostActionCreator.create(u, p, :like, created_at: Time.now)
もちろん、投稿IDとユーザー名はご自身のものに置き換える必要があります。
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.