Как проверить текст не пусто в Rails
если я делаю
validates :body, :presence => true, :length => {:maximum => 30000, :message => ' is a bit long...'}
validates :body, :length => {:minimum => 10, :message => ' is a bit short...'}
у меня все еще есть возможность иметь текст, который включает только spaces
и /r
или /n
- не видимые символы, которые, хотя текст не пуст по определению, он пуст, глядя на него
как я могу проверить, что текст имел минимальную и максимальную длину, перечисленные выше, а также виден (не 10 пробелов)
3 ответов
Rails добавляет удобный метод blank?
который проверяет наличие false, nil и пустых строк, как описано здесь.
Rails также добавляет удобный валидатор allow_blank: false
.
так что в вашем случае это должно быть:
validates :body, presence: true, allow_blank: false
Edit (оригинальный ответ выше):
как указано в ответе ниже allow_blank: false
не требуется, так как это поведение по умолчанию presence: true
.
presence: true
уже это по
http://guides.rubyonrails.org/active_record_validations.html#presence
этот помощник проверяет, что указанные атрибуты не пусты. Он использует пробел? метод проверки, если значение равно нулю или пустой строке, то есть строка, которая либо пуста, либо состоит из пробелов.
Что делать, если вы попробуйте добавить что-то вроде этого:
validates_format_of :body, :with => /\A[[:graph:]]\Z/i
Примечания:
-
validates_format_of
позволяет проверить с помощью regex -
[[:graph:]]
позволяет проверить строку для печати символов (см. раздел "классы символов")