diff options
author | Sean Griffin <sean@thoughtbot.com> | 2014-05-21 15:07:13 -0700 |
---|---|---|
committer | Sean Griffin <sean@thoughtbot.com> | 2014-05-21 15:07:29 -0700 |
commit | e45e4f44e35d6ce9868542cc2a151b2a6c497e9b (patch) | |
tree | b68cf8fc46a61a79acee62d5ba96feb97c500ad7 /activerecord/lib/active_record/connection_adapters | |
parent | b042f21c93959e0247d447f37644815bdc6d5851 (diff) | |
download | rails-e45e4f44e35d6ce9868542cc2a151b2a6c497e9b.tar.gz rails-e45e4f44e35d6ce9868542cc2a151b2a6c497e9b.tar.bz2 rails-e45e4f44e35d6ce9868542cc2a151b2a6c497e9b.zip |
Move extract_scale to decimal type
The only type that has a scale is decimal. There's a special case where
decimal columns with 0 scale are type cast to integers if the scale is
not specified. Appears to only affect schema dumping.
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters')
3 files changed, 5 insertions, 6 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/type.rb b/activerecord/lib/active_record/connection_adapters/type.rb index 763176cb2b..9103ae85c0 100644 --- a/activerecord/lib/active_record/connection_adapters/type.rb +++ b/activerecord/lib/active_record/connection_adapters/type.rb @@ -22,8 +22,8 @@ module ActiveRecord class << self def extract_scale(sql_type) case sql_type - when /^(numeric|decimal|number)\((\d+)\)/i then 0 - when /^(numeric|decimal|number)\((\d+)(,(\d+))\)/i then $4.to_i + when /\((\d+)\)/ then 0 + when /\((\d+)(,(\d+))\)/ then $3.to_i end end end diff --git a/activerecord/lib/active_record/connection_adapters/type/decimal.rb b/activerecord/lib/active_record/connection_adapters/type/decimal.rb index ac5af4b963..a8cd1cf5b5 100644 --- a/activerecord/lib/active_record/connection_adapters/type/decimal.rb +++ b/activerecord/lib/active_record/connection_adapters/type/decimal.rb @@ -4,6 +4,8 @@ module ActiveRecord class Decimal < Value # :nodoc: include Numeric + delegate :extract_scale, to: Type + def type :decimal end diff --git a/activerecord/lib/active_record/connection_adapters/type/value.rb b/activerecord/lib/active_record/connection_adapters/type/value.rb index 289c27f6d4..52d9ed9bc0 100644 --- a/activerecord/lib/active_record/connection_adapters/type/value.rb +++ b/activerecord/lib/active_record/connection_adapters/type/value.rb @@ -3,10 +3,7 @@ module ActiveRecord module Type class Value # :nodoc: def type; end - - def extract_scale(sql_type) - Type.extract_scale(sql_type) - end + def extract_scale(sql_type); end def type_cast(value) cast_value(value) unless value.nil? |