我正在尝试根据ActionDispatch::RemoteIp::GetIp#calculate_ip
执行以下操作>> ActionDispatch::RemoteIp::GetIp.calculate_ip
但是,我看到了这个错误:
!! #<NoMethodError: undefined method `calculate_ip' for ActionDispatch::RemoteIp::GetIp:Class>
所以问题是,如果这种方法存在缺陷,我该如何在模型中获取远程IP?
答案 0 :(得分:3)
将我的评论转换为答案:
IP地址仅在http请求的上下文中有意义。因此,您必须确定控制器中的IP地址,而不是模型中的IP地址。在测试或后台作业中使用模型时,IP地址是什么?
在控制器内部,您可以使用以下命令获取客户端的IP地址:
rand()
现在您可以将值分配给模型属性:
request.remote_ip
答案 1 :(得分:0)
最好在HTTP请求的上下文中确定IP地址,事实上Rails会为您执行此操作,并在任何实例化控制器中的request.remote_ip
中提供结果。
class SomeController < ApplicationController
def some_action
remote_ip = request.remote_ip
# You can now pass the ip anywhere you'd like to use it
end
end