每次调用控制器时,我都有一个跟踪视频视图的站点。人们可以通过一些沉重的F5ing来淹没他们自己的视频观看。
如何使视图计数或方法每个会话只运行一次?
def show
new_views = @video.views + 1
@video.update_attributes(:views => new_views)
end
答案 0 :(得分:2)
您可以在登录时创建会话变量,例如:
session[:is_logged] = 1
然后,每次你要增加计数器时,只需检查这个变量。
答案 1 :(得分:2)
单个会话变量不起作用,因为您有许多视频,并且您希望将不同视频的计数分开。我认为更好的方法是在db中存储视图事件。
答案 2 :(得分:0)
最简单的方法是在会话中跟踪它:
def show
if session[:has_counted_view] == nil
new_views = @video.views + 1
@video.update_attributes(:views => new_views)
session[:has_counted_view] = true
end
end