Поле представлений, например, предложенное eelco.lempsink.nl, должно работать. И для получения самых популярных предметов вы добавляете что-то вроде:
:sort => "views DESC",
Но убедитесь, что учитывается только количество просмотров этого предмета людьми. Если количество увеличивается каждый раз, когда элемент отображается в списке популярных элементов, вы получите петлю обратной связи, которая испортит систему популярности. Также убедитесь, что веб-сканерам не разрешено изменять статус просмотра.
Кроме того, вы действительно должны учитывать, что вы хотите измерить, количество людей, заинтересованных в продукте, или количество, вводимое в заблуждение миниатюрой и высокой популярностью при нажатии на продукт.
Если это интернет-магазин или аналогичный, вам, вероятно, лучше считать количество покупателей, а не количество просмотров. Это было бы более правильно измерить реальный интерес к продукту (потому что они на самом деле были достаточно заинтересованы, чтобы тратить на него деньги), и все же я думаю, что запись в базу данных для представления звучит немного неразумно (есть гораздо больше просмотров чем покупает). Вы получите более качественные данные, чем поле views
, которое в любом случае может столкнуться с проблемами обратной связи, поскольку вы можете иметь историю популярности, выбрав количество строк order
для продукта с временной меткой в течение определенного периода времени. Получение заказов с прошлой недели или около того, вероятно, не будет таким дорогим (для очень длинных периодов времени результат, вероятно, должен кэшироваться).