diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2014-05-21 21:47:53 -0300 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2014-05-21 21:47:53 -0300 |
commit | 2fb2913b35c4a706f0207119ab0b3e89f61546a1 (patch) | |
tree | 2a1a4df21243f9db901520f22ece415a40045601 /activerecord | |
parent | 62bcf81431baf84f7e4c370c1ae30fe07ee1022a (diff) | |
parent | e45e4f44e35d6ce9868542cc2a151b2a6c497e9b (diff) | |
download | rails-2fb2913b35c4a706f0207119ab0b3e89f61546a1.tar.gz rails-2fb2913b35c4a706f0207119ab0b3e89f61546a1.tar.bz2 rails-2fb2913b35c4a706f0207119ab0b3e89f61546a1.zip |
Merge pull request #15237 from sgrif/sg-move-extract-scale
Move extract_scale to decimal type
Diffstat (limited to 'activerecord')
4 files changed, 7 insertions, 8 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? diff --git a/activerecord/test/cases/schema_dumper_test.rb b/activerecord/test/cases/schema_dumper_test.rb index fd0ef2f89f..61bca976f7 100644 --- a/activerecord/test/cases/schema_dumper_test.rb +++ b/activerecord/test/cases/schema_dumper_test.rb @@ -353,9 +353,9 @@ class SchemaDumperTest < ActiveRecord::TestCase output = standard_dump # Oracle supports precision up to 38 and it identifies decimals with scale 0 as integers if current_adapter?(:OracleAdapter) - assert_match %r{t.integer\s+"atoms_in_universe",\s+precision: 38,\s+scale: 0}, output + assert_match %r{t.integer\s+"atoms_in_universe",\s+precision: 38}, output else - assert_match %r{t.decimal\s+"atoms_in_universe",\s+precision: 55,\s+scale: 0}, output + assert_match %r{t.decimal\s+"atoms_in_universe",\s+precision: 55}, output end end |