嗨,我有一个模型中的现有项目(在a处调用),在最后一个模型中我需要一个模型(在b处调用),也就是获取客户端的ip,这个问题有点受限制。
对于我的问题来说,很简单,可以说我需要从控制器而不是从模型获取IP,并且它不能保存在任何地方,所以我可以通过什么方式获取IP。
p.s我确实尝试过request.remote_ip,但它不知道请求
如果可能的话,您能给我看一下链接或示例代码,以便我理解该怎么做。
答案 0 :(得分:1)
您可以执行以下操作来获取客户端的远程IP,这是使用控制器的。
class TestsController < ApplicationController
def get_ip
ip = request.remote_ip
Test.use_ip(ip)
end
end
假设您有一个模型。我假设它是Test
class Test < ActiveRecord::Base
def self.use_ip(ip)
puts ip
end
end
根据您的要求,这违反了Rails的惯例(这不是很好的做法)
在application_controller.rb中定义以下内容
before_filter :pass_request_around
def pass_request_around
Thread.current[:request] = request
end
在模型中,请求对象现在应该可用
def get_ip
request = Thread.current[:request]
ip = request.remote_ip
end