Fix default output for postgres network address types
This commit is contained in:
parent
5112a6ccdf
commit
72a4670af1
@ -1,3 +1,5 @@
|
||||
require 'ipaddr'
|
||||
|
||||
module ActiveRecord
|
||||
module ConnectionAdapters # :nodoc:
|
||||
# The goal of this module is to move Adapter specific column
|
||||
@ -50,6 +52,15 @@ def default_string(value)
|
||||
when Range
|
||||
# infinity dumps as Infinity, which causes uninitialized constant error
|
||||
value.inspect.gsub('Infinity', '::Float::INFINITY')
|
||||
when IPAddr
|
||||
subnet_mask = value.instance_variable_get(:@mask_addr)
|
||||
|
||||
# If the subnet mask is equal to /32, don't output it
|
||||
if subnet_mask == (2**32 - 1)
|
||||
"\"#{value.to_s}\""
|
||||
else
|
||||
"\"#{value.to_s}/#{subnet_mask.to_s(2).count('1')}\""
|
||||
end
|
||||
else
|
||||
value.inspect
|
||||
end
|
||||
|
@ -261,22 +261,22 @@ def test_schema_dump_includes_json_shorthand_definition
|
||||
|
||||
def test_schema_dump_includes_inet_shorthand_definition
|
||||
output = standard_dump
|
||||
if %r{create_table "postgresql_network_address"} =~ output
|
||||
assert_match %r{t.inet "inet_address"}, output
|
||||
if %r{create_table "postgresql_network_addresses"} =~ output
|
||||
assert_match %r{t.inet\s+"inet_address",\s+default: "192.168.1.1"}, output
|
||||
end
|
||||
end
|
||||
|
||||
def test_schema_dump_includes_cidr_shorthand_definition
|
||||
output = standard_dump
|
||||
if %r{create_table "postgresql_network_address"} =~ output
|
||||
assert_match %r{t.cidr "cidr_address"}, output
|
||||
if %r{create_table "postgresql_network_addresses"} =~ output
|
||||
assert_match %r{t.cidr\s+"cidr_address",\s+default: "192.168.1.0/24"}, output
|
||||
end
|
||||
end
|
||||
|
||||
def test_schema_dump_includes_macaddr_shorthand_definition
|
||||
output = standard_dump
|
||||
if %r{create_table "postgresql_network_address"} =~ output
|
||||
assert_match %r{t.macaddr "macaddr_address"}, output
|
||||
if %r{create_table "postgresql_network_addresses"} =~ output
|
||||
assert_match %r{t.macaddr\s+"mac_address",\s+default: "ff:ff:ff:ff:ff:ff"}, output
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -145,9 +145,9 @@
|
||||
execute <<_SQL
|
||||
CREATE TABLE postgresql_network_addresses (
|
||||
id SERIAL PRIMARY KEY,
|
||||
cidr_address CIDR,
|
||||
inet_address INET,
|
||||
mac_address MACADDR
|
||||
cidr_address CIDR default '192.168.1.0/24',
|
||||
inet_address INET default '192.168.1.1',
|
||||
mac_address MACADDR default 'ff:ff:ff:ff:ff:ff'
|
||||
);
|
||||
_SQL
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user