Ruby on rails Rails访问和操作用户ip地址

Ruby on rails Rails访问和操作用户ip地址,ruby-on-rails,ruby-on-rails-3,devise,ruby-on-rails-3.1,request,Ruby On Rails,Ruby On Rails 3,Devise,Ruby On Rails 3.1,Request,我想检查设备ip地址进入我的站点的次数(root to=>home#index),如果地址多次进入我的站点,则执行一段代码(任何内容).我如何使用rails实现这一点?换句话说,我如何访问并设置一个变量来存储索引操作中登录的用户ip地址的数量?根页面是主页#索引。要进一步说明,用户不必是注册用户,我只想通过计算机ip地址进行跟踪。我需要索引操作中注释掉的单词的帮助。ip中有designecurrent\u sign\u,但我不确定这是否是为了解决这个问题,因为我对设计和rails一般来说都是新手

我想检查设备ip地址进入我的站点的次数
(root to=>home#index)
,如果地址多次进入我的站点,则执行一段代码(任何内容).我如何使用rails实现这一点?换句话说,我如何访问并设置一个变量来存储
索引操作中登录的用户ip地址的数量
?根页面是主页#索引。要进一步说明,用户不必是注册用户,我只想通过计算机ip地址进行跟踪。我需要索引操作中注释掉的单词的帮助。ip中有designe
current\u sign\u
,但我不确定这是否是为了解决这个问题,因为我对设计和rails一般来说都是新手。非常感谢

控制器

       class HomeController < ApplicationController

       def index
       #access user ip address
       #set a variable to increment number of times the address come to a site
       # if no_of_ip_login is_greater_than_1 #In other words if it is a returning user

       redirect_to :controller=>"home" ,:action=>"show"
       end

       end
class HomeController“home”,:action=>“show”
结束
结束
您可以使用

ip_addr = request.env['REMOTE_ADDR']
此外:

还想提到的是,如果您使用的是负载平衡器,那么 远程地址可能返回负载平衡器的IP,而不是实际客户端的IP。 在这种情况下,您通常可以使用以下内容:

ip_addr = request.env['X_FORWARDED_FOR']
所以我推荐request.remote\u ip。它返回HTTP_CLIENT_IP或 X\u转发\u,如果存在,则为远程\u IP。

您可以使用

ip_addr = request.env['REMOTE_ADDR']
此外:

还想提到的是,如果您使用的是负载平衡器,那么 远程地址可能返回负载平衡器的IP,而不是实际客户端的IP。 在这种情况下,您通常可以使用以下内容:

ip_addr = request.env['X_FORWARDED_FOR']
所以我推荐request.remote\u ip。它返回HTTP_CLIENT_IP或
X_已转发\u,如果存在,则为远程\u IP。

谢谢您的回答,但我如何知道我是否支持负载平衡器?抱歉,我对railsLoad Balancement非常陌生。负载平衡是一种计算机网络方法,用于在多台计算机或计算机群集之间分配工作负载。如果您的服务器具有负载平衡器,则IP_addr=request.env['REMOTE\u addr']将返回负载平衡器的IP。仅在这种情况下。但是request.remote_ip总是会返回用户ip。那么我认为request.remote_ip是更好的选择。如果这些信息有帮助的话,我将在heroku上部署。使用其中一个的优点或缺点是什么?是的request.remote_ip是更好的选择:-)非常有用。我无意中收集了负载平衡器地址。谢谢你的回答,但我如何知道我是否支持负载平衡器?抱歉,我对Rails非常陌生。负载平衡是一种计算机网络方法,用于在多台计算机或计算机群集之间分配工作负载。如果您的服务器具有负载平衡器,则ip_addr=request.env[“远程地址”]将向您返回负载平衡器的IP。这只是在这种情况下。但是request.remote\u IP将始终向您返回用户IP。然后我认为
request.remote\u IP
是更好的选择。如果这些信息有帮助,我将在heroku上部署。使用其中一个的优点或缺点是什么?是的request.remote\u IP是更好的选择:-)非常有用。我无意中收集了负载平衡器地址。