Sha256: 85a25a23309b6b70f46065a406f7f51bc7e3035bf847a50df0bc072dc5b9fce4
Contents?: true
Size: 1.3 KB
Versions: 18
Compression:
Stored size: 1.3 KB
Contents
# frozen_string_literal: true require "ipaddr" module ActiveRecord module ConnectionAdapters module PostgreSQL module OID # :nodoc: class Cidr < Type::Value # :nodoc: def type :cidr end def type_cast_for_schema(value) # If the subnet mask is equal to /32, don't output it if value.prefix == 32 "\"#{value}\"" else "\"#{value}/#{value.prefix}\"" end end def serialize(value) if IPAddr === value "#{value}/#{value.prefix}" else value end end # TODO: Remove when IPAddr#== compares IPAddr#prefix. See # https://github.com/ruby/ipaddr/issues/21 def changed?(old_value, new_value, _new_value_before_type_cast) !old_value.eql?(new_value) || !old_value.nil? && old_value.prefix != new_value.prefix end def cast_value(value) if value.nil? nil elsif String === value begin IPAddr.new(value) rescue ArgumentError nil end else value end end end end end end end
Version data entries
18 entries across 18 versions & 2 rubygems