From d1917cfea24af7c6a88975d600867a0ba6dd2d69 Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Mon, 15 Jan 2007 15:48:38 +0000 Subject: Skip column options for primary keys. Closes #7048. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5944 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- .../connection_adapters/abstract/schema_definitions.rb | 14 ++++++++------ .../connection_adapters/abstract/schema_statements.rb | 2 +- 2 files changed, 9 insertions(+), 7 deletions(-) (limited to 'activerecord/lib/active_record/connection_adapters/abstract') diff --git a/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb b/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb index 1b6ccdc7fc..ec839e6f64 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb @@ -203,17 +203,19 @@ module ActiveRecord end class ColumnDefinition < Struct.new(:base, :name, :type, :limit, :precision, :scale, :default, :null) #:nodoc: + + def sql_type + base.type_to_sql(type.to_sym, limit, precision, scale) rescue type + end + def to_sql - column_sql = "#{base.quote_column_name(name)} #{type_to_sql(type.to_sym, limit, precision, scale)}" - add_column_options!(column_sql, :null => null, :default => default) + column_sql = "#{base.quote_column_name(name)} #{sql_type}" + add_column_options!(column_sql, :null => null, :default => default) unless type.to_sym == :primary_key column_sql end alias to_s :to_sql private - def type_to_sql(name, limit, precision, scale) - base.type_to_sql(name, limit, precision, scale) rescue name - end def add_column_options!(sql, options) base.add_column_options!(sql, options.merge(:column => self)) @@ -233,7 +235,7 @@ module ActiveRecord # Appends a primary key definition to the table definition. # Can be called multiple times, but this is probably not a good idea. def primary_key(name) - column(name, native[:primary_key]) + column(name, :primary_key) end # Returns a ColumnDefinition for the column with name +name+. diff --git a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb index edb3042afc..5ae5362a6d 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb @@ -254,7 +254,7 @@ module ActiveRecord def type_to_sql(type, limit = nil, precision = nil, scale = nil) #:nodoc: native = native_database_types[type] - column_type_sql = native[:name] + column_type_sql = native.is_a?(Hash) ? native[:name] : native if type == :decimal # ignore limit, use precison and scale precision ||= native[:precision] scale ||= native[:scale] -- cgit v1.2.3