is_a?(Numeric)

Hej mam taka potrzebe aby sprawdzic czy wartosc przekazywana w params[:wartosc] jest wartoscia numeryczna lub nie.

uzywam funkcji .is_a?(Numeric):

params[:wartosc].is_a?(Numeric)

niestety zawsze zwraca mi ona wartosc false gdyz params[:wartosc] jest String poniewaz jest w cudzyslowach “”

Nawet gdy params[:wartosc] = 21212121 funkcja is_a?(Numeric) zwraca mi false.

Jak rozwiazac taka sytuacje? Uzyc innej funkcji?

można tak http://mentalized.net/journal/2011/04/14/ruby_how_to_check_if_a_string_is_numeric/

Możesz użyć to_i, ale wtedy w przypadku wartości, które nie są liczbami będziesz miał 0, więc pewnie nie o to chodzi.

Drugi sposób, to użycie funkcji Integer:

[code]>> Integer(“a1”)
ArgumentError: invalid value for Integer(): “a1”

Integer(“1”)
=> 1[/code]
I wtedy możesz przełapać ArgumentError w przypadku wartości nie numerycznej.

Tylko po co to robić skoro jest walidator dla wartości numerycznych? (validates_numericality_of)