我需要实现产品页面访问统计(按天)。如何在Rails中更好地做到这一点?
发布于 2010-09-02 03:20:13
在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很容易地报告这一点。
https://stackoverflow.com/questions/3621103
复制相似问题