使用Rails检测新会话

时间:2012-07-26 20:07:33

标签: ruby-on-rails-3 session

我有一个后台工作,抓住用户的Facebook朋友。

我希望每次登录用户启动新的浏览器会话时都会触发此后台作业。我不确定关于什么构成"新"的技术定义? Rails的会话,但理想情况是,一旦用户在一段时间不活动后点击该网站(例如,自上次访问后> 30分钟),它就会触发。

如何在Rails中检测这样的新会话?感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

这是我能解决的最好方法。我正在使用会话变量。我的application_controller中有一个带有before_filter的方法。似乎工作得很好,但我注意到有一些特殊的东西(例如,Pusher)重置会话变量,所以如果使用这个解决方案肯定会监控。如果有人有更好的解决方案,我会全力以赴。

def call_set_facebook_friends
  if session[:new_session] == nil && signed_in?
    current_user.background_set_facebook_friends
    session[:new_session] = true
  end
end

答案 1 :(得分:0)

如果您使用的是Devise,则last_sign_in_at表中有一列users。您的后台作业可以使用它来检查用户最近是否访问过您的网站。