Bignum out of Float range => Infinity


#1

Hola expertos,

tengo un método de modelo que realiza un calculo que lo guarda en la bd,
el
metodo es el siguiente

def pre_rank
rank = 1
tag_count = self.tags.count
self.tags.each do |t|
rank = t.taggings_counttag_count

  end
  puts rank
  self.rank_cache =  (rank**(1.0/tag_count)).round(3)

  self.save!

end

mi problema es que a veces la variable rank se dispara y al calcular
(rank**(1.0/tag_count)).round(3), obtengo un warning: Bignum out of
Float
range=> Infinity

la idea es que rank sea un valor que se multiplique por si mismo en cada
iteracion de cada tag * sus taggings(ocurrencias de ese tag) * la
cantidad
de los tags asociados al item, y aveces este valor crece mucho y al
calcular
la potencia de , me salta el error,

como puedo controlar esto?

saludos cordiales

Atte.
Miguel Michelson Martinez


#2

2008/12/11 Miguel M. removed_email_address@domain.invalid:

la idea es que rank sea un valor que se multiplique por si mismo en cada
iteracion de cada tag * sus taggings(ocurrencias de ese tag) * la cantidad
de los tags asociados al item, y aveces este valor crece mucho y al calcular
la potencia de , me salta el error,

como puedo controlar esto?

¿No será que tag_count es 0?. Podrías controlarlo antes de ejecutar la
división.Silvio