как вести счетчик количества просмотров статьи в рельсах? - PullRequest
2 голосов
/ 27 декабря 2011

У меня есть модель, которая представляет собой галерею изображений. Я хочу отслеживать, сколько просмотров получает изображение. В настоящее время я достигаю этого в контроллере

 def show
    @article = Post.find(params[:id])
    @article.views += 1
    @article.save
 end

Однако это увеличивает счетчик просмотров только при доступе к полному представлению (и этот метод также не позволяет мне кэшировать шаблон). Я также хочу увеличивать представления, когда миниатюры представляются в представлении коллекции индексов (поскольку это также допустимые показы), а также при поиске в других презентациях «лайки», «избранное» и т. Д.

Другими словами, всякий раз, когда отображается полное изображение или большой палец изображения, я хочу увеличить счетчик просмотров. Есть ли какая-то модель / парадигма для достижения этого в рельсах?

Должен ли я сделать это в javascript, чтобы после загрузки страницы я получал список каждого идентификатора поста на странице, а затем просто нажимал на другой контроллер, который увеличивает счетчик просмотров для всех этих постов?

1 Ответ

0 голосов
/ 27 декабря 2011

вы можете переписать ваши маршруты.я сделал это однажды в проекте:

/ user_images / # {random} .jpg => я перенаправил это контроллеру, который извлекает изображение из базы данных, увеличивает его и затем обслуживает.это также имеет эффект, если кто-то сшивает это изображение, вы его посчитаете.

НО ЭТО БОЛЬШОЕ, НО! это экономически выгодно.Я начал это с imagehoster, ужасно!тогда я изменил это.каждый час я передаю лог-файлы моего apache с помощью cronjob и считаю количество просмотров.Затем я добавляю его в базу данных.это исправило все мои утечки производительности.

...