ruby-on-rails-3 - validar - formularios en ruby on rails
Cómo validar texto no está en blanco en Rails (3)
si lo hago
validates :body, :presence => true, :length => {:maximum => 30000, :message => '' is a bit long...''}
validates :body, :length => {:minimum => 10, :message => '' is a bit short...''}
Todavía tengo la posibilidad de tener un texto que incluya solo spaces y /r o /n - caracteres no visibles, que aunque el texto no está en blanco por definición, está en blanco al mirarlo
¿Cómo puedo validar que el texto tenía una longitud mínima y máxima como se muestra arriba y también es visible (no 10 espacios)?
¿Qué pasa si intentas agregar algo como esto?
validates_format_of :body, :with => //A[[:graph:]]/Z/i
Notas:
-
validates_format_ofpermite validar con expresiones regulares -
[[:graph:]]te permite revisar una cadena para caracteres imprimibles ( ver "Clases de caracteres" )
Rails agrega el método práctico en blank? que comprueba las cadenas falsas, nulas y vacías como se describe here .
Rails también agrega el útil validador allow_blank: false .
Así que en tu caso debería ser:
validates :body, presence: true, allow_blank: false
Editar (respuesta original arriba):
Como se indica en la respuesta a continuación, allow_blank: false no es necesario ya que ese es el comportamiento predeterminado de presence: true .
presence: true ya hace eso de acuerdo con http://guides.rubyonrails.org/active_record_validations.html#presence
Este ayudante valida que los atributos especificados no estén vacíos. Utiliza el espacio en blanco? método para verificar si el valor es nulo o una cadena en blanco, es decir, una cadena que está vacía o consiste en espacios en blanco.