ruby-on-rails - Rails current_user ip 因未知原因返回 nil
问题描述
在我的应用程序控制器中,我有这个代码
def user_ip
request.remote_ip
@remote_ip = current_user.request.env["HTTP_X_FORWARDED_FOR"]
end
我想要做的是将 current_users IP 地址添加到分析系统中,该系统位于不同的 static_controller.rb 中,代码如下
def matrimonials
Analytics.identify(
user_id: current_user.id,
traits: { email: "#{ current_user.email }", ip: @remote_ip, friends: 100 },
context: {ip: @remote_ip }
)
Analytics.track(
user_id: current_user.id,
user_email: current_user.email,
event: 'Viewed Matrimonials',
properties: {
name: 'Matrimonials page'
}
) if user_signed_in?
end
在我的分析调试器中,我得到了这个结果:
Analytics.identify(
user_id: '1',
traits: {
email: 'test@test.com',
friends: 100,
**ip: nil**
}
)
为什么ip是零?我在应用程序控制器中设置请求,静态控制器从中继承..
解决方案
您可以试试这个:将您定义user_ip
为辅助方法并在您的matrimonials
方法中使用它。
class ApplicationController < ActionController::Base
helper_method :user_ip
def user_ip
#...
end
end
def matrimonials
#...
context: {ip: user_ip }
end
推荐阅读
- javascript - React:道具更改时重新渲染组件
- django - 如何在 django 启动期间创建类的实例
- android - 用户登录但未登录时的Android Studio按钮onclick重定向条件
- linked-list - Inserting elements in list, between every two
- javascript - 在一个 innerHTML 中显示不同函数的输出
- php - 在 WooCommerce 中自动添加自定义订单运输项目元数据
- pytorch - RuntimeError: 4 维权重 [256, 1, 3, 3] 的预期 4 维输入,但得到了大小为 [64, 1, 786] 的 3 维输入
- macos - MacOS 上的 GridDB Docker
- javascript - Firefox 扩展:如何对内容脚本中的一个 onload 事件做出反应?
- gremlin - Gremlin:获取从顶点离开的边的独特属性