Problema con numeros decimales

Hola a todos!
Tengo un problemita bastante raro y que ya me tiene verde, les cuento:

Tengo un campo en una tabla de accionistas cuyo porcentaje de acciones
tiene
que ser mayor a cero (0) y menor o igual a cien (100). en el modelo
tengo lo
siguiente:

class Accionista < ActiveRecord::Base
has_many :empresas

validates_numericality_of :porcacc, :message => ‘^ El campo “Porcentaje
de
Acciones” debe ser mayor a cero (0) y menor o igual a cien (100)’,
:only_integer => false, :if => Proc.new {|accionista|
accionista.porcacc.to_f > 0 && accionista.porcacc.to_f <= 100.0}

end

Al parecer deberia de funcionar pero les cuento que no… en la vista
colo
300 o 120 y me deja grabar sin problemas…

no entiendo alguien me puede explicar?

Segun tu codigo, la validacion solo ocurre cuando se cumple la
condicion del IF, es decir que solo se valida cuando el valor esta
entre 0 y 100, por eso te deja meter 300, o 120, simplemente cuando
pones estos valores ignora la validacion. Creo que has confundido la
funcion del IF, aqui no deberias ponerla ya que quieres validar
siempre que este entre 0 i 100, puedes hacer…

validates_numericality_of :porcacc, :message => ‘^ El campo “Porcentaje
de
Acciones” debe ser mayor a cero (0) y menor o igual a cien (100)’,
:only_integer => false, :greater_than => 0, :less_than_or_equal_to =>
100

El día 24 de mayo de 2009 23:21, Manuel P.
[email protected] escribió:

validates_numericality_of :porcacc, :message => '^ El campo "Porcentaje de


Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es