2013-03-18 11 views
17

se faccioCome convalidare il testo non è vuoto in Rails

validates :body, :presence => true, :length => {:maximum => 30000, :message => ' is a bit long...'} 
    validates :body, :length => {:minimum => 10, :message => ' is a bit short...'} 

ho ancora una possibilità di avere un testo che include solo spaces e /r o /n - caratteri non visibili, che mentre l'isn di testo 't vuoto, per definizione, è vuoto, cercando in esso

Come posso confermare che il testo ha avuto un minimo e lunghezza massima di cui sopra ed è anche visibile (non 10 spazi)

+0

Si può sempre provare a usare regex per verificare caratteri non numerici, non numerici e speciali, un po 'come ciò che è stato suggerito in quest'altra [domanda/risposta] (http://stackoverflow.com/questions/7680771/rotaie-custom-validation-based-on-a-regex). – summea

+0

Prova a guardare questa [domanda/risposta] (http://stackoverflow.com/questions/6765020/regex-to-validate-string-having-only-characters-not-special-characters-blank) pure. – summea

risposta

43

Rails aggiunge il metodo pratico blank? che controlla per stringhe false, nul e vuote come descritto here.
Rails aggiunge anche il pratico validatore allow_blank: false.

Quindi nel tuo caso dovrebbe essere:

validates :body, presence: true, allow_blank: false


Edit (risposta originale al di sopra):

Come indicato nella risposta qui sotto, allow_blank: false non è necessaria in quanto questo è il default comportamento di presence: true.

+6

L'impostazione 'allow_blank: false' è superflua poiché' convalida presenza: true' fa già ciò che vuoi. Si prega di notare la risposta corretta in fondo: http://stackoverflow.com/a/24832913/273715 – jottr

5

che cosa succede se si tenta di aggiungere qualcosa di simile:

validates_format_of :body, :with => /\A[[:graph:]]\Z/i 

Note:

  • validates_format_of consente di convalidare con regex
  • [[:graph:]] consente di controllare una stringa per caratteri stampabili (see "Character Classes")
24

presence: true fa già che secondo http://guides.rubyonrails.org/active_record_validations.html#presence

Questo helper convalida che gli attributi specificati non sono vuote. Usa lo spazio in bianco? metodo per verificare se il valore è nullo o una stringa vuota, ovvero una stringa vuota o costituita da spazi vuoti.

+0

Questo è lo stesso per Rails 3: http://guides.rubyonrails.org/v2.3.11/activerecord_validations_callbacks.html# validates-presence-of – jottr

+1

Quindi QUESTA è la risposta giusta ... grazie! – gfd

Problemi correlati