Gab*_*own 3 ruby postgresql session ruby-on-rails heroku
我在Heroku上运行一个简单的网站,当我运行应用程序时,我注意到一些奇怪的事情.当我的用户登录数据库时,大约有50-60%的用户报告了一个nil session_id.
我正在使用active_record_store作为我的会话处理程序,使用Postgres作为我的数据库服务器.我使用cookie_store得到了类似的结果,所以我不确定我做错了什么.我唯一的猜测是用户发出的第一个请求,可能还没有填充id.会话表具有正确的条目数,但我的跟踪表没有.
示例代码
class CaptionController < ApplicationController
def index
@image = Image.order("RANDOM()").first
Tracking.log(session.id, Tracking::VIEW_CAPTION_ON_IMAGE, @image.id)
end
Run Code Online (Sandbox Code Playgroud)
上面的代码占50%的时间,会话在其记录的表中为零.
我找到了答案,看起来Rails试图通过仅在有东西存储时创建会话来提高效率.因此,在不存储内容的情况下访问session.id不会返回一致的结果.
您需要通过在其中存储内容来强制创建会话.
TLDR:在访问会话ID之前将其添加到某处.
session[:foo] = "bar"
Run Code Online (Sandbox Code Playgroud)
资料来源:http://www.gani.com.au/2013/08/force-session-creation-in-rails/
| 归档时间: |
|
| 查看次数: |
1600 次 |
| 最近记录: |