【问题标题】:Getting user's ip address in model在模型中获取用户的 IP 地址
【发布时间】:2011-10-31 14:57:37
【问题描述】:

我的所有表都有一个 ip_address 字段,我想使用模型自动流行。我怎么能在模型中设置它?我猜我必须为此使用 before_save 过滤器?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3


    【解决方案1】:

    没有理由使用过滤器。 ip_address 列与其他列一样。根据您的意图,您必须找到匹配的模型实例并更改其 ip_address 列或创建一个包含 columnm 的新条目。

    当你说你在每个表中都有列时,它的样式很糟糕。 ip_address 分配给用户,而不是每个模型。我建议您创建一个名为Login 的新模型,其中包括ip_addressuser_id 以及created_atupdated_at 字段。最后一个是自动生成的。然后您可以在每次用户登录时保存 ip_address。像这样在您的控制器中:

    login=Login.new
    login.user=current_user
    login.ip_address=request.remote_ip
    login.save 
    

    【讨论】:

    • 这些表格供匿名用户使用(这些是未创建帐户的访问者)。因此,出于安全原因,需要在 1 个以上的表中记录 ip_address。您的解决方案似乎非常重复。我想知道的是是否可以在模型中自动设置它——无需在表单或动作处理时手动设置。
    • 无需登录即可识别用户。您可以创建一个名为Visitor 的模型并在会话中写入visitor_id。因此,您可以在不让他们登录的情况下识别用户,并且可以将Visitmodel(与我谈到的Login 模型具有相同的字段)与Visitor 模型相关联,这样您就可以看到访问者何时使用了哪个IP -地址。
    猜你喜欢
    • 2014-09-27
    • 2011-02-06
    • 1970-01-01
    • 2012-06-12
    • 2013-08-01
    • 2015-03-23
    • 2014-08-23
    • 2011-06-02
    相关资源
    最近更新 更多