2011-06-20 12 views
22

quiero validar un número :value a estar dentro de 1 o 2Valida que un valor esté en un cierto rango, p. 1 <= val <= 2

validates :value, :format => { :with => /1|2/, :message => "Select number.." } 

Sin embargo, el código anterior impide procesar la validación cuando value == 1

Por favor asegúrese de que su solución permite para agregar un mensaje para la validación

Respuesta

16

Usted está buscando validates_inclusion_of:

validates_inclusion_of :value, :in => [1, 2], 
    :message => "Select one of %{value}" 

También puede utilizar el (bastante nuevo) shothand forma y un rango en lugar de una matriz:

validates :value, :inclusion => { :in => 1..2 } 
+1

% {value} es el valor que el usuario suministra, no la lista de opciones permitidas ([1, 2]) como lo hacen aparece. (Actualmente estoy tratando de averiguar cómo interpolar la lista de opciones permitidas en el mensaje de error yo mismo ...) –

+1

Por cierto, encontré la respuesta (cómo interpolar la lista de opciones permitidas en el mensaje de error) aquí: http : //stackoverflow.com/a/8528139/47185 en caso de que alguien esté interesado –

13

si quiere que sea un número dentro de 1 y 2 (1.5, 1.6839749, etc.) do

validates_numericality_of :value, :greater_than_or_equal_to => 1, :less_than_or_equal_to => 2, :message => "blah" 

puede no ser lo que usted está buscando, pero vale la pena señalar,

+1

Exactamente lo que necesitaba. Ninguna otra respuesta manejó casos decimales. – Jon

Cuestiones relacionadas