【发布时间】:2011-04-28 04:27:29
【问题描述】:
我有一个网站可以跟踪视频浏览量……每次调用控制器时。人们可以用一些沉重的 F5 来淹没他们自己的视频视图。
如何使视图计数或方法在每个会话中只运行一次?
def show
new_views = @video.views + 1
@video.update_attributes(:views => new_views)
end
【问题讨论】:
标签: ruby-on-rails ruby session
我有一个网站可以跟踪视频浏览量……每次调用控制器时。人们可以用一些沉重的 F5 来淹没他们自己的视频视图。
如何使视图计数或方法在每个会话中只运行一次?
def show
new_views = @video.views + 1
@video.update_attributes(:views => new_views)
end
【问题讨论】:
标签: ruby-on-rails ruby session
您可以在登录时创建会话变量,例如:
session[:is_logged] = 1
然后,每次你要增加计数器时,只需检查这个变量。
【讨论】:
单个会话变量不起作用,因为您有很多视频,并且您想为不同的视频分开计数。我认为更好的方法是将视图事件存储在数据库中。
【讨论】:
嗯,最简单的方法是在会话本身中跟踪它:
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
【讨论】: