From e62fff40edde10bd04bbb91ce242f4a7f7ea64a8 Mon Sep 17 00:00:00 2001 From: Sean Griffin Date: Fri, 31 Oct 2014 11:23:24 -0600 Subject: Treat strings greater than int max value as out of range Sufficiently large integers cause `find` and `find_by` to raise `StatementInvalid` instead of `RecordNotFound` or just returning `nil`. Given that we can't cast to `nil` for `Integer` like we would with junk data for other types, we raise a `RangeError` instead, and rescue in places where it would be highly unexpected to get an exception from casting. Fixes #17380 --- activerecord/lib/active_record/type/big_integer.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 activerecord/lib/active_record/type/big_integer.rb (limited to 'activerecord/lib/active_record/type/big_integer.rb') diff --git a/activerecord/lib/active_record/type/big_integer.rb b/activerecord/lib/active_record/type/big_integer.rb new file mode 100644 index 0000000000..0c72d8914f --- /dev/null +++ b/activerecord/lib/active_record/type/big_integer.rb @@ -0,0 +1,13 @@ +require 'active_record/type/integer' + +module ActiveRecord + module Type + class BigInteger < Integer # :nodoc: + private + + def max_value + ::Float::INFINITY + end + end + end +end -- cgit v1.2.3