ruby-on-rails - Rails 为每个创建/更新请求保存 IP 地址

标签 ruby-on-rails session ip env

我想做以下事情:

定义一个 before_filterapplication.rb提取用户的 IP 地址并将其存储在任何地方,最好是在 session 中。

在我的所有模型中定义两个 before 过滤器作为 before_create 和 before_update ,将当前用户的 IP 添加到要存储的对象。

问题:我无法访问 session[]两者都不是 env[]在一个模型中。任何人都可以帮助提供我还不知道的标准解决方案吗?

问候
杰森

最佳答案

尝试这个。在您的用户模型中添加一个类属性访问器

cattr_accessor :current_ip

在您的应用程序 Controller 中添加:
before_filter :set_current_ip

protected
def set_current_ip
    User.current_ip = request.env['REMOTE_ADDR']
end

然后在您的模型中,您应该能够调用 User.current_ip

我们做一些类似的事情来让 current_user 对象通过。

关于ruby-on-rails - Rails 为每个创建/更新请求保存 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1431778/

相关文章:

postgresql - 无法使用 Host = localhost 连接到在 docker 中运行的 Postgresql

ruby-on-rails - 实现抽象基模型类,Rails Way™

ruby-on-rails - rails 4 : How to upload files with AJAX

ruby-on-rails - rails 3.1 引擎和数据库

php - 如何在magento 1.9.2社区版中维护自定义登录和注册帐户模块的自定义 session

c - 为什么 IP header 变量声明根据字节顺序交换

getaddrinfo 和 getnameinfo 的正确用法

ruby-on-rails - 如何在特定时区(最好是我的应用程序的默认时区,而不是 UTC)中创建新的 DateTime 对象?

使用 HTML 的 PHP session

asp.net - session 状态只能在 enableSessionState 设置为 true 时使用