Sha256: 5c7b53e34c9556ee5fbce062128a98efaf5363287ff3bee4b41634343976c869

Contents?: true

Size: 1 KB

Versions: 11

Compression:

Stored size: 1 KB

Contents

module ActiveRecord
  module ConnectionAdapters
    class MysqlAdapter
      alias __native_database_types_enum native_database_types
      
      def native_database_types #:nodoc
        types = __native_database_types_enum
        types[:enum] = { :name => "enum" }
        types
      end

      def columns(table_name, name = nil)#:nodoc:
        sql = "SHOW FIELDS FROM #{table_name}"
        columns = []
        execute(sql, name).each { |field| columns << MysqlColumnWithEnum.new(field[0], field[4], field[1], field[2] == "YES") }
        columns
      end
    end
    
    class MysqlColumnWithEnum < MysqlColumn
      include ActiveRecordEnumerations::Column
      
      def initialize(name, default, sql_type = nil, null = true)
        if sql_type =~ /^enum/i
          values = sql_type.sub(/^enum\('([^)]+)'\)/i, '\1').split("','").map { |v| v.intern }
          default = default.intern if default and !default.empty?
        end
        super(name, default, sql_type, null, values)
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 3 rubygems

Version Path
smukherjee-openbill-0.1.5 vendor/plugins/enum-column/lib/enum/mysql_adapter.rb
smukherjee-openbill-0.1.6 vendor/plugins/enum-column/lib/enum/mysql_adapter.rb
smukherjee-openbill-0.1.7 vendor/plugins/enum-column/lib/enum/mysql_adapter.rb
enum_column-0.1.6 lib/enum_column/mysql_adapter.rb
enum_column-0.1.5 lib/enum_column/mysql_adapter.rb
enum_column-0.1.4 lib/enum_column/mysql_adapter.rb
enum_column-0.1.2 lib/enum_column/mysql_adapter.rb
enum_column-0.1.1 lib/enum/mysql_adapter.rb
enum_column-0.1.0 lib/enum/mysql_adapter.rb
openbill-0.1.6 vendor/plugins/enum-column/lib/enum/mysql_adapter.rb
openbill-0.1.5 vendor/plugins/enum-column/lib/enum/mysql_adapter.rb