Количество просмотров "поста"

Делаю небольшой новостной сайт. В нём нет пользователей, как и во многих других новостных ресурсах. Как можно реализовать подсчёт просмотров каждого поста? Может быть гем есть какой-нибудь?
Нужно для вывода на страничку популярных постов.
  • Вопрос задан
  • 3170 просмотров
Пригласить эксперта
Ответы на вопрос 4
1. Заведите в модели Поста целочисленное поле :visitors.
2. В контроллере постов сделайте как-то так:

def show
...
@post.increment(:visitors)
@post.save
...
end
Ответ написан
mastedm
@mastedm
На новостном сайте логично новости держать в кеше, например, в cache views или вообще в nginx. Поэтому делать increment счетчика в самом посте неправильно. Я бы сделал на каждой странице с постом вызов фейковой картинки 1x1 пиксель, который передает на сервер id поста, например, так:

<img src='/counter?post_id=1234' />

Такой вызов будет создавать запись CounterHit с post_id и возможно дополнительной инфой о пользователе. Далее эти данные уже можно агрегировать как вам удобно: делать статистику по часам, по дням, "за последние 15 минут" и тд.
Ответ написан
Комментировать
Я не могу в ruby, но предложу вот что: я предполагаю, что новости у вас хранятся в БД. Так вот: оберните выборку новости в хранимую процедуру, и после чтения апдейтите кол-во просмотров (если у вас нет такого столбца, заведите его).

Так и вывод популярных постов будет реализовываться одним запросом.
Ответ написан
Aice
@Aice
gem 'punching_bag'

любые операции связанные с просмотрами, сам пользуюсь, советую
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы