File tree Expand file tree Collapse file tree 3 files changed +24
-1
lines changed
activemodel/lib/active_model/type/helpers
test/cases/adapters/postgresql Expand file tree Collapse file tree 3 files changed +24
-1
lines changed Original file line number Diff line number Diff line change @@ -42,7 +42,8 @@ def equal_nan?(old_value, new_value)
42
42
end
43
43
44
44
def number_to_non_number? ( old_value , new_value_before_type_cast )
45
- old_value != nil && non_numeric_string? ( new_value_before_type_cast . to_s )
45
+ old_value != nil && !new_value_before_type_cast . is_a? ( ::Numeric ) &&
46
+ non_numeric_string? ( new_value_before_type_cast . to_s )
46
47
end
47
48
48
49
def non_numeric_string? ( value )
Original file line number Diff line number Diff line change
1
+ * Don't mark Float::INFINITY as changed when reassigning it
2
+
3
+ When saving a record with a float infinite value, it shouldn't mark as changed
4
+
5
+ * Maicol Bentancor*
6
+
1
7
* Support ` RETURNING ` clause for MariaDB
2
8
3
9
* fatkodima* , * Nikolay Kondratyev*
Original file line number Diff line number Diff line change @@ -48,4 +48,20 @@ def test_update
48
48
assert_equal new_single , record . single
49
49
assert_equal new_double , record . double
50
50
end
51
+
52
+ def test_reassigning_infinity_does_not_mark_record_as_changed
53
+ record = PostgresqlNumber . create! ( single : Float ::INFINITY , double : -Float ::INFINITY )
54
+ record . reload
55
+ record . single = Float ::INFINITY
56
+ record . double = -Float ::INFINITY
57
+ assert_not_predicate record , :changed?
58
+ end
59
+
60
+ def test_reassigning_nan_does_not_mark_record_as_changed
61
+ record = PostgresqlNumber . create! ( single : Float ::NAN , double : Float ::NAN )
62
+ record . reload
63
+ record . single = Float ::NAN
64
+ record . double = Float ::NAN
65
+ assert_not_predicate record , :changed?
66
+ end
51
67
end
You can’t perform that action at this time.
0 commit comments