Sha256: d73ec7b30d06e76b02d46869a0d1f49875f53860c754a6481091d7f22e87df9e

Contents?: true

Size: 995 Bytes

Versions: 15

Compression:

Stored size: 995 Bytes

Contents

module Torque
  module PostgreSQL
    module Adapter
      module OID
        class Enum < ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Enum

          attr_reader :name, :klass

          def self.create(row)
            new(row['typname'])
          end

          def initialize(name)
            @name  = name
            @klass = Attributes::Enum.lookup(name)
          end

          def hash
            [self.class, name].hash
          end

          def serialize(value)
            return if value.blank?
            value = cast_value(value)
            value.to_s unless value.nil?
          end

          def assert_valid_value(value)
            cast_value(value)
          end

          private

            def cast_value(value)
              return if value.blank?
              return value if value.is_a?(@klass)
              @klass.new(value)
            rescue Attributes::Enum::EnumError
              nil
            end

        end
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
torque-postgresql-0.2.7 lib/torque/postgresql/adapter/oid/enum.rb
torque-postgresql-0.2.6 lib/torque/postgresql/adapter/oid/enum.rb
torque-postgresql-0.2.5 lib/torque/postgresql/adapter/oid/enum.rb
torque-postgresql-0.2.4 lib/torque/postgresql/adapter/oid/enum.rb
torque-postgresql-0.2.3 lib/torque/postgresql/adapter/oid/enum.rb
torque-postgresql-0.2.2 lib/torque/postgresql/adapter/oid/enum.rb
torque-postgresql-0.2.1 lib/torque/postgresql/adapter/oid/enum.rb
torque-postgresql-0.1.7 lib/torque/postgresql/adapter/oid/enum.rb
torque-postgresql-0.1.6 lib/torque/postgresql/adapter/oid/enum.rb
torque-postgresql-0.1.5 lib/torque/postgresql/adapter/oid/enum.rb
torque-postgresql-0.1.4 lib/torque/postgresql/adapter/oid/enum.rb
torque-postgresql-0.1.3 lib/torque/postgresql/adapter/oid/enum.rb
torque-postgresql-0.1.2 lib/torque/postgresql/adapter/oid/enum.rb
torque-postgresql-0.1.1 lib/torque/postgresql/adapter/oid/enum.rb
torque-postgresql-0.1.0 lib/torque/postgresql/adapter/oid/enum.rb