2

アプリのホームページにアクセスしたすべてのユーザーのデータベースに IP を保存しようとしています。列のある IP モデル/テーブルを追加ip:floatし、インデックスで次の操作を行いました。

 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. ただし、IPアドレスは

127.0.0.1

1)「float」が正しいタイプではないため、一部の小数点以下が切り捨てられたと推測しています。IP 全体を記録するには、代わりに何を使用すればよいですか?

2)また、私は少し初心者/ハックなので、インデックスのコードを改善できると思います。IP を収集して保存するコードの改善にご協力いただければ幸いです。

4

1 に答える 1

1

IPアドレスを文字列として保存することをお勧めします。IPv4の場合、最大長は15文字(###。###。###。###)だと思います。IPv6を考慮したい場合は、最大45文字の長さを考慮する必要があります。45文字である理由を説明するこの関連する質問を参照してください。

于 2012-05-08T02:43:57.320 に答える