diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2012-02-27 10:21:18 -0800 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2012-02-27 10:21:18 -0800 |
commit | a19dd29e554ee9578bb7f95a35bc5712bb06ab4d (patch) | |
tree | 28f83ed288ec3ed193bbc2fd508036f013008782 /activerecord/lib | |
parent | 9ad7767aba737fc19496a5475083c45048210180 (diff) | |
parent | fe7cacb5106cd240e4d18ae518fa4e56c7e4ec5d (diff) | |
download | rails-a19dd29e554ee9578bb7f95a35bc5712bb06ab4d.tar.gz rails-a19dd29e554ee9578bb7f95a35bc5712bb06ab4d.tar.bz2 rails-a19dd29e554ee9578bb7f95a35bc5712bb06ab4d.zip |
Merge pull request #5173 from kennyj/fix_3931-2
Fix type_to_sql with text and limit on mysql/mysql2. Fix GH #3931 (Try again).
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb index eec7efadc2..e33903622b 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb @@ -484,15 +484,26 @@ module ActiveRecord # Maps logical Rails types to MySQL-specific data types. def type_to_sql(type, limit = nil, precision = nil, scale = nil) - return super unless type.to_s == 'integer' - - case limit - when 1; 'tinyint' - when 2; 'smallint' - when 3; 'mediumint' - when nil, 4, 11; 'int(11)' # compatibility with MySQL default - when 5..8; 'bigint' - else raise(ActiveRecordError, "No integer type has byte size #{limit}") + case type.to_s + when 'integer' + case limit + when 1; 'tinyint' + when 2; 'smallint' + when 3; 'mediumint' + when nil, 4, 11; 'int(11)' # compatibility with MySQL default + when 5..8; 'bigint' + else raise(ActiveRecordError, "No integer type has byte size #{limit}") + end + when 'text' + case limit + when 0..0xff; 'tinytext' + when nil, 0x100..0xffff; 'text' + when 0x10000..0xffffff; 'mediumtext' + when 0x1000000..0xffffffff; 'longtext' + else raise(ActiveRecordError, "No text type has character length #{limit}") + end + else + super end end |