wlodi
1
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?
marr
2
drogus
3
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.
apohllo
4
Tylko po co to robić skoro jest walidator dla wartości numerycznych? (validates_numericality_of)