gpt4 book ai didi

ruby-on-rails - 如何在rails中保存http引用

转载 作者:行者123 更新时间:2023-12-03 14:47:35 26 4
gpt4 key购买 nike

我正在尝试保存用户注册时来自的网站。现在我的 ApplicationController 中有一个 before_filter:

before_filter :save_referer

def save_referer
unless is_logged_in?
session['referer'] = request.env["HTTP_REFERER"] unless session['referer']
end
end

然后,当创建用户时,它会检查此 session 变量并将其设置为 nil。有时这不起作用,我担心使用这样的 session 可能会发生一些意想不到的事情。有没有人有更好的方法?或者一些输入?

编辑:这是我用来保存引用的逻辑:
def create     
@user = User.new(params[:user])
if @user.save_with(session[:referer])
....
end

用户
def save_with(referer)
self.referer = referer unless referer == "null"
self.save
end

有什么理由不应该这样做吗?

最佳答案

我认为你的方法有缺陷。只要用户正在点击页面并且没有登录,过滤器代码就会运行。所以唯一的办法session['referer']如果他们直接进入注册页面,他们(大概)发布他们的登录信息并检查 session 变量,则不会为零。

我认为您可能只需要检查一次引用者-为此,您必须修改过滤器代码。

def save_referer
unless is_logged_in?
unless session['referer']
session['referer'] = request.env["HTTP_REFERER"] || 'none'
end
end
end

现在,当您想知道他们的引用者是什么时,它要么是有效的 url,要么是“无”。请注意,由于它在 session 中,因此并不完美:他们可以转到另一个 url 并返回, session 仍然有效。

关于ruby-on-rails - 如何在rails中保存http引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2341879/

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