ユーザーにランダムなダイジェスト時間を割り当てますか?

phpBBフォーラムを約1400人のユーザーと共にDiscourseに移行しました。少数のアカウントを除き、ほとんどのダイジェストは午前8時に送信されているようです。ユーザーに00:00から23:00の間のランダムな時間を割り当てる方法はありますか?

– Geoff

わかりませんが、(AIに)言われました。

https://ask.discourse.com/discourse-ai/ai-bot/shared-ai-conversations/wisnZ2lMtzSY1ji_QM8BiA

クリックセーバー: いいえ、AIが知っていて幻覚を見ていなかった場合。

user_stats.digest_attempted_at をすべてのユーザーに対してランダムな値で変更できると思います。現在の user_stats.digest_attempted_at 値に0〜24時間を追加することもできます。

これが私がしなければならないだろうと推測していたことです。しかし、私はリモートで接続できるデータベースサーバーがある共有サーバー環境に慣れています。SQLは非常に得意ですが、DigitalOceanドロップレット上のデータベースにどのように接続すればよいかわかりません。何かヒントがあれば大変助かります。

データベースを直接変更するのではなく、Rails から行いたいということですね。

しかし、以下のようにすることも可能です。

./launcher enter app
su - postgres
psql discourse

そして、作業を開始します。

Administrative Bulk Operations を参照すると、以下のような例が見つかると思います。

users=User.where(something)
users.each do |user|
   user.update(field: value)
end

ポインタをありがとうございます。Railsから行うのは学習曲線がきつすぎると判断し、Postgres経由で実行する方法を見つけました。以下が私の解決策です。

./launcher enter app
su - postgres
psql discourse
UPDATE user_stats SET digest_attempted_at = digest_attempted_at - interval '1' DAY * random();

これで問題ないと思います。

この件については、これで十分安全だと思います。私も「知っているもので進める」というアプローチは理解できますが、Railsには多くの保護機能(データの強制的な適用やテーブル間の接続維持など)が備わっています。

解決してよかったです!

メールログを確認したところ、すべて均等に分散されています。ご協力ありがとうございました!

「いいね!」 1

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