2010-01-14 9 views
6
modelo

he añadido un campo adicional a mi nueva forma:Validar campo no

<%= select_tag :quantity, options_for_select(["Select a Value"].concat((1..10).to_a)) %> 

Se especifica el número de copias del registro que se creará.

¿Cómo puedo validar la presencia (o la cantidad) de ese campo, ya que no es parte del modelo en sí?

validates_presence_of :quantityfailed !!!

Respuesta

12

Encontrado. Es posible que desee agregar un atributo virtual en el modelo.

......... 

attr_accessor :not_on_db 
......... 

validates_presence_of  :not_on_db, 
validates_length_of  :not_on_db, :within => 1..5 
......... 
1

Use validates_numericality_of validation. La validación de la numericidad comprueba de forma predeterminada el tipo de letra flotante, debe indicar que desea ver números enteros. Como la cantidad no se almacenará en db, debe ser virtual.

Prueba esto:

attr_accessor :quantity 
validates_numericality_of :quantity, :only_integer => true 

validates_numericality_of no acepta nulos por defecto, que no es necesario para comprobar la presencia del atributo, y como es posible que desee cambiar el rango de la cantidad en la vista de lo no lo validaría aquí.

Si desea validar el rango, declararlo como una constante en el modelo. Consulte esta constante tanto en la validación como en la vista.

+0

Recibí la siguiente excepción con esta implementación: método indefinido 'quantity_before_type_cast ' ¿Alguna idea? – Lee

+0

Puede escribir el método 'quantity_before_type_cast 'y devolver self.quantity. No es muy limpio, sino una solución. –

Cuestiones relacionadas