Rails:浮动该列的正确类型?

时间:2012-05-08 02:37:54

标签: ruby-on-rails ip

我试图将IP保存到访问我的应用主页的每个人的数据库中。我添加了一个带有ip:float列的IP模型/表,并在索引中执行了以下操作。

 def index
    ..........

    ipmodel  = Ip.new
    @ip = request.ip
    ipmodel.ip = @ip
    ipmodel.save

  end

当我在控制台中检查数据库时,它给了我这个

#<Ip id: 1, ip: 127.0, created_at: "2012-05-08 02:27:14", updated_at: "2012-05-08 02:27:14"> 

所以,因为我是从localhost访问的,所以127.0。但是,我想知道为什么它只有4位数,因为IP地址是

127.0.0.1

1)我猜测它会削减一些小数,因为&#34; float&#34;不是正确的类型。我应该用什么来记录整个IP?

2)另外,由于我是一个新手/黑客,我假设可以改进索引中的代码。如果您帮助我改进收集和保存IP的代码,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

您需要将IP地址另存为字符串。对于IPv4,我认为最大长度为15个字符(###。###。###。###)。如果您想要考虑IPv6,那么您需要考虑最多45个字符的长度。请参阅此related question,解释为什么它是45个字符。