当我运行这行代码时
Movie.increment_counter :views, @moive.id
因此,列视图将增加两次(+2,而不是+1)。在终端中,我看到这个运行查询到数据库:
UPDATE `movies` SET `views` = COALESCE(`views`, 0) + 1 WHERE `movies`.`id` = 8
如果我尝试将此查询直接运行到MySQL,则视图的值会正确递增一次(+1)。
任何提示,我缺少什么或者我没有设置?
答案 0 :(得分:0)
您是否有机会跟踪网页浏览量?我也遇到了这个问题 - 对于每个页面加载,我会看到页面查看计数器增加3而不是1,但仅限于生产。
原来是谷歌的Adsense代码远程加载页面。我注意到,每当我的一个用户访问该页面时,他们就会两次点击该页面,从而有效地导致3次页面查看。我怀疑他们这样做是为了验证网页上的内容是否符合他们的指南,并帮助将广告与网页内容相匹配。检查您的httpd日志Mediapartners-Google
。我打赌这就是发生了什么。
一般建议:使用Google Analytics (或类似服务)来跟踪网页浏览量。在我的情况下,我仍然需要在数据库中跟踪这个,因为我根据某些页面操作的“流行度”实现自动完成,但您可能不需要这个。