Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to validate text isn't blank in Rails

if I do

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

I still have a possibility of having a text which includes only spaces and /r or /n - non visible chars, which while the text isn't blank by definition, it is blank by looking at it

How can I validate that the text had a min and max length listed above and is also visible (not 10 spaces)

like image 530
Nick Ginanto Avatar asked Mar 18 '13 16:03

Nick Ginanto


2 Answers

Rails adds the handy method blank? which checks for false, nil and empty strings as described here.
Rails also adds the handy validator allow_blank: false.

So in your case it should be:

validates :body, presence: true, allow_blank: false


Edit (original answer above):

As stated in the answer below, allow_blank: false is not needed as that's the default behaviour of presence: true.

like image 160
Lisinge Avatar answered Sep 18 '22 16:09

Lisinge


presence: true already does that according to http://guides.rubyonrails.org/active_record_validations.html#presence

This helper validates that the specified attributes are not empty. It uses the blank? method to check if the value is either nil or a blank string, that is, a string that is either empty or consists of whitespace.

like image 44
Jacob Minshall Avatar answered Sep 16 '22 16:09

Jacob Minshall