gpt4 book ai didi

ruby-on-rails - 将用户代理和 IP 添加到存储的 session -RecordNotSaved -Rails

转载 作者:行者123 更新时间:2023-12-02 04:13:49 25 4
gpt4 key购买 nike

我目前正在构建一个内部分析系统,该系统可以跟踪访问者在每个 session 中点击的位置,无论他们是登录用户帐户还是没有帐户的访问者。

由于通过session_store.rb进行的更改,我目前正在将 session 保存到数据库中,但是除了session_id之外,我还试图弄清楚如何将UserAgent详细信息和访问者的IP添加到 session 表中。

我尝试了几种解决方案,但都失败了 - 我当前的解决方案似乎是最接近的,但是在更新 session 的属性后我不断遇到 ActiveRecord::RecordNotSaved 错误。

我目前在应用程序 Controller 中使用 before 过滤器:

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

我在我的 View 中插入了一条调试语句,并在 pry 中尝试了代码 - @session 有效并正确显示 @session.user_agent ....但是,当保存到数据库时,它只是回滚。

当我使用 save! 时,除了以下内容之外,我还会在日志中收到 Completed 422 Unprocessable Entity(已完成 422 Unprocessable Entity)(粘贴到要点以节省空间): https://gist.github.com/anonymous/8019c2426334f395a5fd

谢谢!任何帮助将不胜感激。

最佳答案

我建议重新考虑您的架构。一个 session 可以持续多个请求,并且您希望每个请求都有一条记录。另请注意如何将数据从请求对象中移出并尝试将它们存储到 session 表中。相反,创建您自己的请求表并创建一个 before 过滤器,将您想要的所有数据从请求对象移动到请求表。现在一个 session 会有很多请求。

我不确定为什么你的记录没有保存,但我敢打赌命名模型 session 与 Rails 冲突。出于同样的原因,当您创建请求表时,您应该给它一个唯一的名称,例如 SessionMeta 和 RequestMeta。那么SessionMeta可以有很多RequestMeta。

关于ruby-on-rails - 将用户代理和 IP 添加到存储的 session -RecordNotSaved -Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19145511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com