Мне не нравится подход вашего решения. Это означает, что если в будущем ваше приложение будет иметь 2k пользователей, вы запустите 2k crontabs?
Вместо создания одного crontab для каждого пользователя, просто создавайте его каждую минуту. Сохраните в пользовательской модели информацию о частоте crontab для этого пользователя и времени последнего выполнения crontab.
Затем, когда основной crontab запускается каждую минуту, проверьте, какие пользователи имеют last_crontab_at + frequency < Time.current
, и запустите сценарий для этих пользователей.
Таким образом, приложение будет масштабироваться независимо от количества пользователей.
Кроме того, помните, что crontabs являются локальными для сервера. Что произойдет, если вам придется сменить сервер или создать кластер? Я предлагаю вам подумать об использовании службы фоновой обработки или очереди.