edge badge
Methods
C
T
Instance Public methods
cast_value(value)
# File activerecord/lib/active_record/connection_adapters/postgresql/oid/cidr.rb, line 29
def cast_value(value)
  if value.nil?
    nil
  elsif String === value
    begin
      IPAddr.new(value)
    rescue ArgumentError
      nil
    end
  else
    value
  end
end
type()
# File activerecord/lib/active_record/connection_adapters/postgresql/oid/cidr.rb, line 6
def type
  :cidr
end
type_cast_for_database(value)
# File activerecord/lib/active_record/connection_adapters/postgresql/oid/cidr.rb, line 21
def type_cast_for_database(value)
  if IPAddr === value
    "#{value.to_s}/#{value.instance_variable_get(:@mask_addr).to_s(2).count('1')}"
  else
    value
  end
end
type_cast_for_schema(value)
# File activerecord/lib/active_record/connection_adapters/postgresql/oid/cidr.rb, line 10
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