インポート後に機能しなくなったトップトピック

インポート後やトピック内のリンク数更新後に、ユーザープロフィールの「トップトピック」をすべて再計算する方法はありますか?

不思議なことに、「トップ返信」は正しく機能しています。

統計は24時間ごとに自動的に計算されると考えています。待つだけで、他に何もする必要はありません。

それは違うようです。数週間前からインポートテストを運用しており、一部は自動的に修正されましたが、他は修正されませんでした。最も顕著な例は「Top Topics」です。もう一つは「Amount Links in topics」です。それ以外は、サイト全体で問題なく動作しているようです。

ふむ、コードを見ると、2 つのジョブがあります。TopRefreshToday(毎時間実行)と TopRefreshOlder(毎日 1 回実行)です。どちらも こちら のメソッドを呼び出します。必要であれば、Rails コンソールから手動で実行することも可能です。

/sidekiq/scheduler を確認して、これら 2 つのジョブが実行されているか確認してください。

トップトピックの計算に必要な情報はすべてインポート時に引き継がれていると想定していますか?

この場合、これらのジョブは正常に実行されています。問題は、topics テーブルの like_count フィールドが未設定のようです。このフィールドの値を再計算する良い方法はありませんか?それとも、インポート時に実行する必要があるのでしょうか?インポート時に実行する必要がある場合、その計算はどのように行うべきでしょうか?これは、トピック内のすべての投稿からのすべての「いいね」の合計でしょうか?

Rails コンソールを使用して、このフィールドを再計算する方法を見つけました:

Topic.visible.map(&:update_statistics)

この解決策の問題点は、当社のトピック数と投稿数に基づくと、このコマンドが完了するまでに約 2 か月かかると見積もられていることです。

like_countupdate_action_counts メソッドを使って再生成できるようです:

したがって、以下のような処理が考えられます:

Topic.all.find_each do |t|
  putc '.'
  t.update_action_counts
end

@Ghan と私にはとてもうまくいきました。本当にありがとうございます :slight_smile: