Ruby on rails Rails设计和用户IP地址

Ruby on rails Rails设计和用户IP地址,ruby-on-rails,ruby,ruby-on-rails-4,devise,Ruby On Rails,Ruby,Ruby On Rails 4,Devise,目前在轨道4的顶部使用Desive 3.5.2,Desive的trackable处于打开状态 通过一系列微服务,我们在RequestStore中拥有客户机的IP地址。它工作得很好,除了当我们想将IP地址保存给用户时。当前\u sign\u in \u IP属性 我试着做: def update_tracked_fields!(*) self.current_sign_in_ip = '10.0.0.1' super end 但这并没有给出所需的行为,因为在登录时,last\u sign

目前在轨道4的顶部使用Desive 3.5.2,Desive的trackable处于打开状态

通过一系列微服务,我们在RequestStore中拥有客户机的IP地址。它工作得很好,除了当我们想将IP地址保存给
用户时。当前\u sign\u in \u IP
属性

我试着做:

def update_tracked_fields!(*)
  self.current_sign_in_ip = '10.0.0.1'
  super
end
但这并没有给出所需的行为,因为在登录时,
last\u sign\u in_ip
会获得固定的
10.0.0.1
地址

覆盖Desive用于存储IP的IP地址的最佳方法是什么


非常感谢您查看designe
更新字段的片段

您可以看到,
request.remote\u ip
重新分配了
current\u sign\u in\u ip
。因此,您的代码将无效

使其工作的一种方法是尝试以下代码:

def update_tracked_fields!(request)
  update_tracked_fields(request)
  self.current_sign_in_ip = '10.0.0.1'
  save(validate: false)
end
或者更好:

def update_tracked_fields(request)
  super
  self.current_sign_in_ip = '10.0.0.1'
end

啊,谢谢-很抱歉问这么简单的问题。我很惊讶trackable没有任何变量或方法可以用另一个变量或方法覆盖IP。
def update_tracked_fields(request)
  super
  self.current_sign_in_ip = '10.0.0.1'
end