Mostrando entradas con la etiqueta Validaciones. Mostrar todas las entradas
Mostrando entradas con la etiqueta Validaciones. Mostrar todas las entradas

jueves, 30 de octubre de 2008

Validar que un atributo sea numerico (validates_numericality_of)

Cuando deseamos validar que un atributo de nuestro modelo sea numerico, lo que podemos hacer es agregarle la siguiente linea al modelo, esta validación incluye opciones que nos permiten hacer que el atributo este en un rango determinado entre otras cosas:

validates_numericality_of :atributo_a_validar, :opciones

Cuando el atributo al que se le desea validar si es numerico no cumple con lo que se le especifica en las opciones el mismo es agregado a una lista de errores que tiene el objeto del modelo.

:atributo_a_validar - es el atributo al cual deseamos validarle el largo

:opciones - las opciones deben ir separadas por comas

  • :message => mensaje, nos permite cambiar el mensaje que está asociado por defecto a el error, el mensaje por defecto es el siguiente "is not a number".
  • :on => nos define en que momento se va a hacer dicha validación por defecto es en el salvado del objeto, pero se puede especificar :create o :update.
  • :only_integer => nos especifica que el objeto a validar solo puede ser un entero por defecto esta en false.
  • :allow_nil => esquiva esta validación si el objeto es nil, esta opcion esta por defecto en false
  • :greater_than => especifica que el valor del atributo debe ser mayor que el numero que le indiquemos.
  • :greater_than_or_equal_to => especifica que el valor del atributo debe ser mayor o igual que el numero que le indiquemos.
  • :equal_to => especifica que el valor del atributo debe ser igual que el valor que le indiquemos
  • :less_than => especifica que el valor del atributo debe ser menor que el valor que le indiquemos
  • :less_than_or_equal_to => especifica que el valor que le indiquemos debe ser menor o igual que el valor que le indiquemos
  • :odd => indica que el atributo debe ser impar
  • :even => nos indica que el atributo debe ser par
  • :if => especifica un metodo, procedimiento o string que se utiliza para saber si realizar la validacion, este metodo debe retornar un valor booleano
  • :unless => especifica un metodo, procedimiento o string que se utiliza para saber si no se debe realizar la validacion, este metodo debe retornar un valor booleano
Ejemplos:

Valida el atributo number del modelo cuando el mismo se actualiza

validates_numericality_of :number, :on => :update 

Valida que el atributo number del modelo sea mayor que 10

validates_numericality_of :number, :greater_than => 10

Valida que el atributo number del modelo sea mayor o igual que 5 y menor que 10

validates_numericality_of :number, :greater_than_or_equal_to => 5, :less_than => 10

Valida que el atributo number del modelo sea igual a 2 si el atributo name es igual a "pepe"

validates_numericality_of :number, :equal_to => 2, :if => :name_validation

def name_validation
  self.name == "pepe"
end

miércoles, 15 de octubre de 2008

Validar largo de campo (validates_length_of)

Cuando deseamos validar el lago de los campos dentro del modelo lo que debemos hacer es agregarle al modelo la siguiente línea

validates_length_of :atributo_a_validar, :opciones

Cuando el atributo al que se le desea validar el largo no cumple con lo que se le especifica en las opciones el mismo es agregado a una lista de errores que tiene el objeto del modelo.

:atributo_a_validar - es el atributo al cual deseamos validarle el largo

:opciones - las opciones deben ir separadas por comas

  • :allow_nil => true o false, indica si el objeto acepta valores nulos o no.
  • :allow_blank => true o false, nos indica si el campo puede o no estar en blanco.
  • :in => numero_inicio..numero_fin, nos indica que el largo del campo debe ir estar entre el numero_inicio y el numero_fin.
  • :minimum => tamaño, nos indica el tamaño mínimo que puede tener el campo que se va a evaluar
  • : máximum => tamaño, nos indica el tamaño máximo  que puede tener el campo que va  a evaluar.
  • :is => numero, nos indica el numero de caracteres que debe tener el campo.
  • :message => mensaje, nos permite cambiar el mensaje que está asociado por defecto a el error, se puede utilizar %d dentro del nuevo mensaje de error para indicar el largo de la cadena que escribió el usuario.
  • :too_long => mensaje, al igual que el anterior nos permite redefinir el mensaje de error para cuando el campo escrito es demasiado largo, también se puede utilizar %d.
  • :too_short => mensaje, al igual que los anteriores nos permite redefinir el mensaje de error para cuando el campo escrito es demasiado corto, también se puede utilizar %d.