Вместо того, чтобы вычислять оценку через заданные интервалы, вы можете обновлять оценку для пользователя всякий раз, когда пользователь выполняет действие, влияющее на общую оценку.
Используя ваш пример, всякий раз, когда пользователь выполняет действие X, добавьте 2 к баллу пользователя. Для действия Y добавьте 1 к счету, а для действия Z вычтите 3.
Если вы не хотите обновлять счет при каждом действии, вы можете написать задачу Rake, которая обновляет счет; взгляните на этот урок , чтобы узнать, как использовать Rake с Rails. Если вы развертываете свое приложение в Unix-подобной ОС, запускайте задачу через регулярные интервалы, используя cron .