Количество просмотров "поста"
135
Делаю небольшой новостной сайт. В нём нет пользователей, как и во многих других новостных ресурсах. Как можно реализовать подсчёт просмотров каждого поста? Может быть гем есть какой-нибудь?
Нужно для вывода на страничку популярных постов.
Ответы (4)
Сортировать по:
  • Я не могу в ruby, но предложу вот что: я предполагаю, что новости у вас хранятся в БД. Так вот: оберните выборку новости в хранимую процедуру, и после чтения апдейтите кол-во просмотров (если у вас нет такого столбца, заведите его).

    Так и вывод популярных постов будет реализовываться одним запросом.
  • 1. Заведите в модели Поста целочисленное поле :visitors.
    2. В контроллере постов сделайте как-то так:

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

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

    Такой вызов будет создавать запись CounterHit с post_id и возможно дополнительной инфой о пользователе. Далее эти данные уже можно агрегировать как вам удобно: делать статистику по часам, по дням, "за последние 15 минут" и тд.
  • gem 'punching_bag'

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

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

Войти через TM ID
Похожие вопросы