0
次のREGEXが指定されている場合、INVALID_EMAILと一致しない電子メールドメインが無期限に実行され、レールサーバー(ローカルenv)をロックするようです。Rails 3 - 電子メール検証のヘルプRegex
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)
ありがとうございますが、正規表現に問題があります。無効なメールと一致するメールがあると、うまく動作し、falseを返します。 invalid_emailsと一致しないメールが届いたとき、応答がなくなり、応答が遅くなります。 – AnApprentice
@AnApprentice:これは私が見ることができるコードでは起こっていません。より多くのコードを提供してください。 –
この場合の正規表現はそれをしません。有効なメールと無効なメールの両方で、完全に動作します。コードのどこかに問題がある可能性があります。おそらくこのメソッドを呼び出す部分です。 – vonconrad