Подтвердить что ты не робот

Как проверить текст в 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 пробелов)

4b9b3361

Ответ 1

Rails добавляет удобный метод blank?, который проверяет наличие ложных, нулевых и пустых строк, как описано здесь.
Rails также добавляет удобный валидатор allow_blank: false.

Итак, в вашем случае это должно быть:

validates :body, presence: true, allow_blank: false


Изменить (исходный ответ выше):

Как указано в ответе ниже, allow_blank: false не требуется, поскольку это поведение по умолчанию presence: true.

Ответ 2

presence: true уже делает это согласно http://guides.rubyonrails.org/active_record_validations.html#presence

Этот помощник подтверждает, что указанные атрибуты не пусты. Он использует пробел? метод, чтобы проверить, равно ли значение ниль или пустая строка, то есть строка, которая либо пуста, либо состоит из пробелов.

Ответ 3

Что делать, если вы попытаетесь добавить что-то вроде этого:

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

Примечания:

  • validates_format_of позволяет проверять с помощью регулярных выражений
  • [[:graph:]] позволяет вам проверять строку для печатаемых символов (см. "Классы символов" )