我目前正在使用Active Job / Resque从外部api中提取。它工作得很好但我希望它在用户登录时定期从api(并更新记录)中拉出来。
Devise提供了我似乎无法使用的current_user方法,我似乎无法检查会话以打破循环。如果我将逻辑放在控制器中,那么它会影响页面加载等,这会破坏目的。
基本上,这就是我想要做的事情:
class PullApiJob < ActiveJob::Base
queue_as :default
def perform(current_user, info)
while current_user
#Logic to pull info from api and save into Info record
sleep(200)
end
end
end
答案 0 :(得分:0)
如何在db中检查每个请求和存储的会话时间。添加session_timeout_at
,
if current_user && DateTime.now > current_user.session_timeout_at
current_user.update(session_timeout_at: DateTime.now + session_duration)
# session_duration => session expire duration, ex) 30.minutes
end
您的工作
class PullApiJob < ActiveJob::Base
queue_as :default
def perform(current_user, info)
while current_user.session_timeout_at > DateTime.now do
# Your Logic
sleep(200)
current_user.reload # <- Must reload for check updated session_timeout_at
end
end
end