aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/type/float.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib/active_record/type/float.rb')
-rw-r--r--activerecord/lib/active_record/type/float.rb8
1 files changed, 7 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/type/float.rb b/activerecord/lib/active_record/type/float.rb
index 0a9088e0a1..b3928242b7 100644
--- a/activerecord/lib/active_record/type/float.rb
+++ b/activerecord/lib/active_record/type/float.rb
@@ -12,7 +12,13 @@ module ActiveRecord
private
def cast_value(value)
- value.to_f
+ case value
+ when ::Float then value
+ when "Infinity" then ::Float::INFINITY
+ when "-Infinity" then -::Float::INFINITY
+ when "NaN" then ::Float::NAN
+ else value.to_f
+ end
end
end
end