PostgreSQL支持inet數據類型。使用正確的數據類型,許多問題就會消失。
scratch=# create table test (
scratch(# ip_addr inet not null);
CREATE TABLE
scratch=# insert into test values ('147.226.211.40');
INSERT 0 1
scratch=# insert into test values ('1.39.80.12');
INSERT 0 1
scratch=# insert into test values ('128.237.199.43');
INSERT 0 1
scratch=# select * from test order by ip_addr;
ip_addr
----------------
1.39.80.12
128.237.199.43
147.226.211.40
(3 rows)
ActiveRecord支持INET數據類型。簡單來說 。 。 。
$ bin/rails generate scaffold IpAddr ip_addr:inet
編輯控制器。訂購編號:ip_addr
。
$ head -9 app/controllers/ip_addrs_controller.rb
class IpAddrsController < ApplicationController
before_action :set_ip_addr, only: [:show, :edit, :update, :destroy]
# GET /ip_addrs
# GET /ip_addrs.json
def index
@ip_addrs = IpAddr.all.order(:ip_addr)
# ^^^^^^^^^^^^^^^
end
瀏覽到該頁面,您會發現IP地址的排序正確。
IPv4地址實際上可以存儲爲32位整數。我想知道'1.39.80。,12.97'是什麼。 – 2015-02-10 18:53:24
這是我的錯誤,當提出問題。 – Kashiftufail 2015-02-10 18:58:42
實際上,IPv4地址*是一個32位整數。 – 2015-02-11 22:28:38