aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/lib
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2017-02-24 19:44:19 -0500
committerRafael Mendonça França <rafaelmfranca@gmail.com>2017-02-24 19:44:19 -0500
commitbf8f42b2fea7e104826e214bcdd1255aa9acc802 (patch)
treede606dba6db87db1ecd41fd9e09f3844e56a7ccf /activemodel/lib
parent9099cf064f66ae4e6414736ad513399c86100902 (diff)
parent0683552b15becd6949ab4e125d9790f1b65b7415 (diff)
downloadrails-bf8f42b2fea7e104826e214bcdd1255aa9acc802.tar.gz
rails-bf8f42b2fea7e104826e214bcdd1255aa9acc802.tar.bz2
rails-bf8f42b2fea7e104826e214bcdd1255aa9acc802.zip
Merge branch 'jhawthorn-ruby_2_4_bigdecimal_casting'
Closes #27429
Diffstat (limited to 'activemodel/lib')
-rw-r--r--activemodel/lib/active_model/type/decimal.rb8
1 files changed, 7 insertions, 1 deletions
diff --git a/activemodel/lib/active_model/type/decimal.rb b/activemodel/lib/active_model/type/decimal.rb
index 541a12c8a1..e6805c5f6b 100644
--- a/activemodel/lib/active_model/type/decimal.rb
+++ b/activemodel/lib/active_model/type/decimal.rb
@@ -21,8 +21,14 @@ module ActiveModel
case value
when ::Float
convert_float_to_big_decimal(value)
- when ::Numeric, ::String
+ when ::Numeric
BigDecimal(value, precision || BIGDECIMAL_PRECISION)
+ when ::String
+ begin
+ value.to_d
+ rescue ArgumentError
+ BigDecimal(0)
+ end
else
if value.respond_to?(:to_d)
value.to_d