Sha256: 648c41c42d0d12061b7c7918df1f85e5c5fb125c879fadb14f6315d79303b5af

Contents?: true

Size: 1.13 KB

Versions: 1

Compression:

Stored size: 1.13 KB

Contents

module ActiveRecord
  module PGEnum
    module SchemaDumper
      private

      def extensions(stream)
        super
        enums(stream)
      end

      def enums(stream)
        return unless (enum_types = @connection.enum_types).any?

        stream.puts "  # These are custom enum types that must be created before they can be used in the schema definition"

        enum_types.each do |name, definition|
          stream.puts %Q{  create_enum "#{name}", %w[#{definition.join(" ")}]}
        end

        stream.puts
      end

      # Gathers the arguments needed for the column line inside the create_table block.
      def column_spec(column)
        if column.type == :enum
          return ["column", [column.sql_type.inspect, prepare_column_options(column)]]
        end

        super
      end

      # Takes a column specification in Object form and serializes it into a String.
      def format_colspec(colspec)
        case colspec
        when String
          colspec
        when Array
          colspec.map { |value| format_colspec(value) }.select(&:present?).join(", ")
        else
          super
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
activerecord-pg_enum-0.3.0 lib/active_record/pg_enum/schema_dumper.rb