Module: ActiveRecord::ConnectionAdapters::SchemaStatements

Defined in:
lib/activerecord-mysql-unsigned/active_record/v3/connection_adapters/abstract/schema_statements.rb,
lib/activerecord-mysql-unsigned/active_record/v4/connection_adapters/abstract/schema_statements.rb

Instance Method Summary collapse

Instance Method Details

#type_to_sql(type, limit = nil, precision = nil, scale = nil, unsigned = nil) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/activerecord-mysql-unsigned/active_record/v3/connection_adapters/abstract/schema_statements.rb', line 7

def type_to_sql(type, limit = nil, precision = nil, scale = nil, unsigned = nil, auto_increment = nil)
  if native = native_database_types[type.to_sym]
    column_type_sql = (native.is_a?(Hash) ? native[:name] : native).dup

    if type == :decimal
      scale ||= native[:scale]

      if precision ||= native[:precision]
        if scale
          column_type_sql << "(#{precision},#{scale})"
        else
          column_type_sql << "(#{precision})"
        end
      elsif scale
        raise ArgumentError, "Error adding decimal column: precision cannot be empty if scale is specified"
      end
    elsif (type != :primary_key) && (limit ||= native.is_a?(Hash) && native[:limit])
      column_type_sql << "(#{limit})"
    end

    column_type_sql
  else
    type
  end
end