プログラムで「いいね!」を追加できますか?

Discourse へのインポート中、主要な投稿が移行中に 100 件の「いいね!」を失いました(適切にスクレイピングできませんでした)。この場合、インポート スクリプトを再実行したくありません。

投稿に「いいね!」したユーザーのリストがある場合、それらを追加する最善の方法は何ですか? レークコマンドはありますか?

私がやるなら、いいねをインポートするスクリプトを見て、いいねを追加するために何をするかを確認し、それをRailsコンソールで行います。それはPostActionだと確信しています。

そのようなrakeコマンドはないと確信していますが、それはかなり珍しいリクエストだからです(ほとんどの場合、インポートスクリプトを再実行するだけです)、しかし私は調べていません。

「いいね!」 3

ご回答ありがとうございます。インポートスクリプトを再実行するのは、ほぼ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
...

これと同様のものを実行します。ありがとうございます!

「いいね!」 3

私もかなり不安になるでしょう!

やったー!「まあ、私がやるなら…」のような曖昧な答えが役に立つかどうかは、決してわかりません。

レールコンソールに何かを貼り付ける場合、便利なトリックがあります。行の末尾に「;」を付けると、最後のステートメントの結果を確認するために less ページャーに移動させられることがなくなります。(適切なループを作成したり、スクリプトを実行したりする場合は、このヒントは必要ありません。)

頑張ってください!

「いいね!」 2

もしこれを実行したい人がいれば、私の場合これでうまくいきました。レールコンソールを開いて、以下を実行します。

p = Post.find(31871)
u = User.find_by(username:"xxx")
PostActionCreator.create(u, p, :like, created_at: Time.now)

もちろん、投稿IDとユーザー名はご自身のものに置き換える必要があります。

「いいね!」 2

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.