Numeric Validator only checks RegEx? Should "15.0" be an integer, or equals an integer?

Hello, I saw an issue on Github talking about ActiveModel validators Numercality validator only_integer is not reliable with decimal storage.

The validator’ default behaviour is checking the input with regular expression (/\A[±]?\d+\z/) to see if input matches an integer’s format.

If the input is like “15.0”, this validation would fail.

But in some cases, you can only get “15.0”, “15.00”. For example, in a database storing all numbers using decimal(10,2).

Should “15.0” or “15.00” be recognized as an integer? Or people would have to check it manually?

I made a patch to check if the Actual Value of a number is an integer, using BigDecimal#frac.

As for the performance, I did a benchmark here: precise_integer_validator_benchmark. A-million-times BigDecimal validation is about 2 seconds slower than RegEx validation on my MacBook Air. (2.6 vs 0.7), is it acceptable?