Задать вопрос
@ermolushka

Как проверять валидацию email на бэкенде, при этом сделав поле ввода email необязательным?

Нужно проверять на backend валидацию email, при этом во view поле input должно быть необязательным для заполнения.
  • Вопрос задан
  • 703 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
mil0rd
@mil0rd
  • Перед валидацией содержимого поля проверь на пустоту, если пусто пропускай как валидная запись, нет то делай валидацию того что там указали.
  • Проверяй на количество символов (учитывай кодировки), если 0 то пропускай как валидная запись, нет то делай валидацию того что там указали.
  • Сделай значение по умолчанию для поля. Перед валидацией проверь значение, если оно соответствует значению по умолчанию, то в базу пиши null если нет делай валидацию.

Для себя я сделал класс валидации, и при проверке указываю параметр для пропуска пустого (null) значения.
Ответ написан
Комментировать
@ermolushka Автор вопроса
Решение найдено: в модели написал примерно следующее

class Contact < MailForm::Base
    attribute :phone
    attribute :email,     :validate => /\A([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})\z/i,
                          presence: false, allow_blank: true
    validate :at_least_a_contact

  def headers
    {
      :subject => "My Contact Form",
      :to => "admin@admin.com",
      :from => %("#{phone}" <#{email}>)
    }
  end
  private
    def at_least_a_contact
      unless phone.present? || email.present?
        errors.add(:contact, "You need at least a contact method")
      end
    end
end
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы