Rails 3 - Помощь с регулярным выражением проверки электронной почты - PullRequest
0 голосов
/ 22 января 2011

следующий REGEX, если предоставлен домен электронной почты, который не соответствует INVALID_EMAILs, кажется, работает бесконечно и блокирует сервер rails (мой локальный env).

INVALID_EMAILS = %w(gmail.com googlemail.com yahoo.com ymail.com rocketmail.com hotmail.com facebook.com)


  def valid_email_domain(emailAddy)
    reg = Regexp.new /#{User::INVALID_EMAILS.map{|a| Regexp.quote(a)}.join("|")}/
    if emailAddy.scan(reg).size == 0
      return true
    else
      return false
    end
  end

Есть ли какие-либо эксперты по регулярным выражениям, которые могут предоставить обратную связь? Спасибо

ОБНОВЛЕНО:

контроллер:

  def create

    @user = User.new

    # User EmailVeracity to validate the email address
    email = EmailVeracity::Address.new(params[:user][:email])

    Rails.logger.info 'Email Check Result'
Rails.logger.info valid_email_domain(params[:user][:email])
    Rails.logger.info 'Email Check Result'

    if email.valid?
      Rails.logger.info 'Sign this email up'
    else
      Rails.logger.info 'Bad email, dont touch that'
    end

    respond_to do |format|
      format.html
      format.js
    end

  end
protected

  def valid_email_domain(emailAddy)
    !(emailAddy =~ /#{User::INVALID_EMAILS.map{|a| Regexp.quote(a)}.join("|")}/)
  end

Модель пользователя:

INVALID_EMAILS = %w(gmail.com googlemail.com yahoo.com ymail.com rocketmail.com hotmail.com facebook.com)

1 Ответ

2 голосов
/ 22 января 2011

Ты делаешь это слишком сложным.Этого должно быть достаточно:

def valid_email_domain(email_address)
  !(email_address =~ /#{INVALID_EMAILS.map{|a| Regexp.quote(a)}.join("|")}/)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...