Недавно я мигрировал форум phpBB с примерно 1400 пользователями на Discourse. За исключением нескольких аккаунтов, все дайджесты отправляются начиная с 8:00 утра. Есть ли способ назначить пользователям случайное время в диапазоне от 00:00 до 23:00?
Я думаю, что вы могли бы изменить user_stats.digest_attempted_at для всех ваших пользователей на случайное значение. Возможно, вы добавите от 0 до 24 часов к текущему значению user_stats.digest_attempted_at.
Вот что я, в общем-то, и предполагал, что мне придётся делать. Однако я привык к среде общих серверов, где есть сервер баз данных, к которому можно подключиться удалённо. Я отлично знаю SQL, но совершенно не понимаю, как подключиться к базе данных на Droplet от DigitalOcean. Буду очень признателен за любые подсказки.
Большое спасибо за подсказки. Я решил, что делать это через Rails — слишком крутая кривая обучения, поэтому разобрался, как сделать это через PostgreSQL. Вот моё решение:
./launcher enter app
su - postgres
psql discourse
UPDATE user_stats SET digest_attempted_at = digest_attempted_at - interval '1' DAY * random();
В данном случае это достаточно безопасно. Я понимаю подход «используй то, что знаешь», но Rails предоставляет множество защитных механизмов (обеспечивает соблюдение правил, поддерживает связь между таблицами и так далее).