diff options
Diffstat (limited to 'activerecord')
3 files changed, 21 insertions, 11 deletions
diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG index fe44b1b6d3..5ff813a111 100644 --- a/activerecord/CHANGELOG +++ b/activerecord/CHANGELOG @@ -1,3 +1,8 @@ +*SVN* + +* Ruby 1.9 compatibility. [Jeremy Kemper] + + *2.0.2* (December 16th, 2007) * Ensure optimistic locking handles nil #lock_version values properly. Closes #10510 [rick] 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 2aa8a12228..b8a6b19f04 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb @@ -417,7 +417,11 @@ module ActiveRecord # end def column(name, type, options = {}) column = self[name] || ColumnDefinition.new(@base, name, type) - column.limit = options[:limit] || native[type.to_sym][:limit] if options[:limit] or native[type.to_sym] + if options[:limit] + column.limit = options[:limit] + elsif native[type.to_sym].is_a?(Hash) + column.limit = native[type.to_sym][:limit] + end column.precision = options[:precision] column.scale = options[:scale] column.default = options[:default] 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 8f981438df..8bbadd67e7 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb @@ -255,26 +255,27 @@ module ActiveRecord def type_to_sql(type, limit = nil, precision = nil, scale = nil) #:nodoc: if native = native_database_types[type] column_type_sql = native.is_a?(Hash) ? native[:name] : native + if type == :decimal # ignore limit, use precision and scale - precision ||= native[:precision] scale ||= native[:scale] - if precision + + if precision ||= native[:precision] if scale column_type_sql << "(#{precision},#{scale})" else column_type_sql << "(#{precision})" end - else - raise ArgumentError, "Error adding decimal column: precision cannot be empty if scale if specified" if scale + elsif scale + raise ArgumentError, "Error adding decimal column: precision cannot be empty if scale if specified" end - column_type_sql - else - limit ||= native[:limit] - column_type_sql << "(#{limit})" if limit - column_type_sql + + elsif limit ||= native.is_a?(Hash) && native[:limit] + column_type_sql << "(#{limit})" end + + column_type_sql else - column_type_sql = type + type end end |