2012-05-14 15 views
0

我在User模型中獲得validates_presence_of :email。我的用戶模型也有一個布爾型member列,以確定何時用戶是成員或常規用戶。如何驗證會員的電子郵件?

普通用戶無需電子郵件即可註冊。但是當他們註冊會員賬戶時,他們需要提供一封電子郵件。

問題是當用戶註冊爲常規用戶時,驗證會觸發說明:email爲空。我如何去做這件事?

如果驗證也命名了作用域,那就太棒了。

+1

你能詳細說明你想要發生什麼嗎?如果一個空白電子郵件的普通用戶註冊成爲會員,*不應該*觸發驗證錯誤? –

+0

對不起,作了一些更改,使其更清晰。基本上,想要註冊爲常規用戶不應該觸發電子郵件驗證 –

回答

1

,該成員的註冊表單調用行爲可以明確設置user.member = true,則JacobM的回答會的工作,即,

validates_presence_of :email, :if => :member 
+0

完美!這似乎工作! –

1

如果我理解你,應該是越簡單

validates_presence_of :email, :if => :member 
+0

那麼,只有當用戶已經是會員時纔會觸發。這意味着,在會員的註冊表單上,如果用戶決定將電子郵件留空,驗證不會觸發。 –

+0

我不明白爲什麼。直到您嘗試保存對象時纔會觸發驗證。大概你已經設置了成員標誌。它與「如果你對問題1說是,然後問題2是必需的」並沒有根本的區別,我一直這樣做。 –