class Torque::PostgreSQL::Adapter::OID::Enum

Attributes

enum_klass[R]
klass[R]
name[R]
set_klass[R]

Public Class Methods

create(row, type_map) click to toggle source
# File lib/torque/postgresql/adapter/oid/enum.rb, line 11
def self.create(row, type_map)
  name    = row['typname']
  oid     = row['oid'].to_i
  arr_oid = row['typarray'].to_i

  oid_klass     = Enum.new(name)
  oid_set_klass = EnumSet.new(name, oid_klass.klass)
  oid_klass.instance_variable_set(:@set_klass, oid_set_klass)

  type_map.register_type(oid,     oid_klass)
  type_map.register_type(arr_oid, oid_set_klass)
end
new(name) click to toggle source
# File lib/torque/postgresql/adapter/oid/enum.rb, line 24
def initialize(name)
  @name  = name
  @klass = Attributes::Enum.lookup(name)

  @enum_klass = self
end

Public Instance Methods

==(other) click to toggle source
# File lib/torque/postgresql/adapter/oid/enum.rb, line 50
def ==(other)
  self.class == other.class &&
    other.klass == klass &&
    other.type == type
end
assert_valid_value(value) click to toggle source
# File lib/torque/postgresql/adapter/oid/enum.rb, line 41
def assert_valid_value(value)
  cast_value(value)
end
hash() click to toggle source
# File lib/torque/postgresql/adapter/oid/enum.rb, line 31
def hash
  [self.class, name].hash
end
serialize(value) click to toggle source
# File lib/torque/postgresql/adapter/oid/enum.rb, line 35
def serialize(value)
  return if value.blank?
  value = cast_value(value)
  value.to_s unless value.nil?
end
type_cast_for_schema(value) click to toggle source

Always use symbol value for schema dumper

# File lib/torque/postgresql/adapter/oid/enum.rb, line 46
def type_cast_for_schema(value)
  cast_value(value).to_sym.inspect
end

Private Instance Methods

cast_value(value) click to toggle source
# File lib/torque/postgresql/adapter/oid/enum.rb, line 58
def cast_value(value)
  return if value.blank?
  return value if value.is_a?(@klass)
  @klass.new(value)
rescue Attributes::Enum::EnumError
  nil
end