Как сделать счетчик действий?
Можно в таблице пользователей сделать дополнительное поле comments_count и увеличивать его при написании комментария, но это не очень правильно на мой взгляд.
так и делают, разве что увеличивают асинхронно
сам подумай  - ращнесенный проект, и вот уже твоя база со счетчиком в сам понимаешь где
Кешируйте count нужной сущности по каждому юзеру в его модели, или где вам покажется более правильным.
Обновлять его можно несколькими вариантами. Можно создать очередь в которую будет периодически валиться job после определенного действия пользователя. Можно задать временные интервалы обновления рейтинга, например 4 раза в сутки, и в промежутки по 6 часов потихоньку обновлять count по каждому пользователю (в таком случае кешировать мы будем старое и новое значение и их время, а рейтинг обновлять, когда у всех новое значение будет в требуемом промежутке).