diff options
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/postgresql/oid/cidr.rb')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/postgresql/oid/cidr.rb | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql/oid/cidr.rb b/activerecord/lib/active_record/connection_adapters/postgresql/oid/cidr.rb index 507c3a62b0..158468fe5b 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql/oid/cidr.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql/oid/cidr.rb @@ -7,6 +7,17 @@ module ActiveRecord :cidr end + def type_cast_for_schema(value) + 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 + end + def cast_value(value) ConnectionAdapters::PostgreSQLColumn.string_to_cidr value end |