我目前正在构建一个内部分析系统,用于跟踪访问者在每个会话中点击的位置,无论他们是登录到用户帐户还是没有帐户的访问者。
由于通过 session_store.rb 所做的更改,我目前正在将会话保存到数据库中,但是除了 session_id 之外,我还试图弄清楚如何将 UserAgent 详细信息和访问者的 IP 添加到会话表中。
我尝试了几个解决方案,但都失败了 - 我当前的解决方案似乎是最接近的,但是在更新 Session 的属性后我一直遇到 ActiveRecord::RecordNotSaved 错误。
我目前在应用程序控制器中使用前置过滤器:
before_filter :set_useragent_and_ip_in_session
def set_useragent_and_ip_in_session
if session
sess = request.session_options[:id]
@session = Session.where(session_id: sess).first
@session.update_attributes(:ip=>request.remote_ip, :user_agent=>request.user_agent)
@session.save!
else
end
end
我在我的视图中插入了一个调试语句,并在 pry 中播放了代码 - @session 是有效的并正确显示 @session.user_agent .... 但是当保存到数据库时它只是回滚。
当我使用 save! 时,除了以下内容(粘贴到 gist 以节省空间)之外,我还在日志中收到 Completed 422 Unprocessable Entity: https ://gist.github.com/anonymous/8019c2426334f395a5fd
谢谢!任何帮助将不胜感激。