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_of
permite 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.