2013-08-22 67 views
3

我目前正試圖以驗證一封電子郵件,其中幾件事情屬性:軌,驗證電子郵件排除

  1. 它的存在
  2. 及其與正則表達式中
  3. 其獨特
  4. 其非存在格式一個郵件提供商列表

我被困在第四步,我真的不知道如何實現它,這一步的主要是排除可投遞郵件提供商。

我目前這個已經:

validates :email, :presence => true, 
        :format  => { :with => email_regex }, 
        :uniqueness => { :case_sensitive => false }, 
        :exclude => Not working when I put a regex here 

我的問題不是正則表達式,它是如何排除郵件匹配與排除正則表達式。

你能幫我做這個嗎?

親切地說,羅布。

+0

有沒有像排除。您必須使用email_regex或自定義驗證。 – techvineet

+0

我該如何做自定義驗證? – user2462805

回答

8

如果您使用的設計進行用戶身份驗證,你可以取消代碼devise.rb

# Email regex used to validate email formats. It simply asserts that 
    # one (and only one) @ exists in the given string. This is mainly 
    # to give user feedback and not to assert the e-mail validity. 
    # config.email_regexp = /\A[^@][email protected][^@]+\z/ 

否則我認爲你可以在模型像

validates :email, uniqueness: true 
    validate :email_regex 

def email_regex 
    if email.present? and not email.match(/\A[^@][email protected][^@]+\z/) 
     errors.add :email, "This is not a valid email format" 
    end 
    end 
+0

是的,謝謝! – user2462805

0

在你的模型中做這樣的事情。

validate :exclude_emails 

private 

def exclude_emails 
if (self.email =~ /blah(.*)/) 
    errors.add_to_base("Email not valid") 
end 
end 
+0

add_to_base已棄用。 – user2462805

5

格式驗證有沒有選項(至少在軌道4和3.2),所以...

validates :email, :presence => true, 
        :format  => { :with => email_regex}, 
        :uniqueness => { :case_sensitive => false } 
validates :email, :format  => {:without => some_regex} 
+0

感謝您的想法,但實際上我們不能在同一時間內放置:with和:without。但你知道我想要什麼 – user2462805

+0

嗯,我不知道。沒有問題,你可以稱它兩次。更新了我的答案。 – iwiznia