2012-11-08 20 views
1

我有設計認證,我沒有使用validatable,我發送請求,並沿着它發送一個類型。例如如何定製設計,使得驗證只在指定的條件下完成?

http://localhost:3000/signup/new?type=twitter 
在上述所示

我已經使用type=twitter和在情況下,它是微博我不想要驗證的電子郵件,即,不需要validates_presence_of :email但在情況下,我發送類型=電子郵件然後我想要查詢存在的郵件以及郵件是否已經被佔用並且檢查指定的郵件是否有效?我怎樣才能做到這一點?請幫幫我。

回答

2

您可以添加以下到你的控制器:

if params[:type] == 'twitter' 
    user.save(:validate => false) 

不過,我不會建議這樣做,因爲你將不得不無效數據在數據庫中。如果你真的要求用戶在使用Twitter登錄時輸入他的電子郵件,這將是最好的。 Ryan Bates在this episode about omniauth處理了整個挑戰。

編輯:我調查了一下,如果你檢查色器件的源代碼,你會發現,他們現在有這種方法稱爲email_required?

所以你所要做的就是重寫該方法。你如何用戶模型的外觀?你如何讓用戶使用Twitter登錄?如果你編輯你的問題並告訴我們,我們可能能夠進一步幫助你。

0

我認爲@Ashitaka有一個好點的時候,他說你應該要求用戶的電子郵件不管。

然而,你正在努力實現,我會創造我自己的驗證器類。你可以看到如何實現這個in this rails guide