Статистика посещений страницы - PullRequest
1 голос
/ 01 сентября 2010

Мне нужно внедрить статистику посещений страниц продукта (по дням). Как лучше это сделать в Rails?

1 Ответ

1 голос
/ 01 сентября 2010

Быстрый и грязный способ создать что-то подобное в Rails - создать таблицу отслеживания:

create_table :product_views do |t|
  t.integer :product_id, :null => false
  t.date :viewed_at, :null => false
  t.integer :views, :null => false, :default => 1
end

add_index :product_views, [ :product_id, :viewed_at ], :unique => true
add_index :product_views, :viewed_at

Уникальный индекс будет означать, что у вас есть одна запись на продукт в день.Там будет отсутствовать записи в течение нескольких дней без просмотра этого продукта.Это также означает, что вы можете использовать функцию ON DUPLICATE KEY MySQL, если это ваша внутренняя база данных.

Вы можете заполнить это с помощью одного вызова SQL:

class Product
  def self.record_view!(product_id)
    connection.execute(
      sanitize_sql([
        "INSERT INTO product_views (product_id, viewed_at)
          VALUES (?, CURRENT_DATE())
          ON DUPLICATE KEY UPDATE views=views+1",
        product_id
      ])
    )
  end

  def record_view!
    self.class.record_view!(self.id)
  end
end

Это можно вызватьв любое время и добавит 1 к вашей таблице счетчиков.Вы можете легко сообщить об этом, используя стандартный SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...