页面访问统计

时间:2010-09-01 18:37:30

标签: ruby-on-rails statistics

我需要实施产品页面访问统计信息(按天)。如何在Rails中做到这一点?

1 个答案:

答案 0 :(得分:1)

在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

唯一索引意味着每个产品每天有一个条目。如果该产品没有任何视图,则会有缺少的条目。这也意味着如果那是你的后端数据库,你可以使用MySQL的ON DUPLICATE KEY功能。

您可以使用单个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轻松地报告此事。