diff options
-rw-r--r-- | activerecord/lib/active_record/type/decimal.rb | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/type/decimal.rb b/activerecord/lib/active_record/type/decimal.rb index 27566cf856..ba5d244729 100644 --- a/activerecord/lib/active_record/type/decimal.rb +++ b/activerecord/lib/active_record/type/decimal.rb @@ -14,10 +14,9 @@ module ActiveRecord private def cast_value(value) - case value - when ::Numeric, ::String + if value.is_a?(::Numeric) || value.is_a?(::String) BigDecimal(value, precision.to_i) - when proc { value.respond_to?(:to_d) } + elsif value.respond_to?(:to_d) value.to_d else cast_value(value.to_s) |