2011-12-02 88 views
0

我正在創建我的第一個Rails和MVC應用程序。這是我的婚禮客人創建RSVPs的網站。如果電子郵件唯一性驗證失敗,如何重定向到login_path?

我有一個深度嵌套的單一窗體。 RSVP has_one用戶和has_many Guests。

此表單一次性創建用戶,RSVP和賓客。還有一個通過login_path編輯現有RSVP的鏈接。

我在用戶模型上有validates_uniqueness_of:email。如果用戶在創建新的RSVP時嘗試創建新的RSVP,即:email:uniqueness validation failed,我想重定向到login_path。

如果:email:唯一性驗證失敗,我該如何重定向到login_path?

回答

0

如果該電子郵件的唯一驗證失敗並且重定向(如果是這種情況),您需要在控制器操作中進行測試。這就是說,我不確定是否有更好的方法來知道某個特定字段的某個驗證是否失敗,而不僅僅是比較錯誤消息,如下所示:

if @user.save 
    # do success actions 
else 
    if @user.errors[:email] == 'has already been taken' # ugh 
    respond_to |format| 
     format.html { redirect_to login_path(email: @user.email) } 
    end 
    else 
    # handle other errors 
    end 
end 
+0

我想這是因爲用戶是在RSVP控制器,但是@ rsvp.errors [:email]不起作用。所以,我不得不使用偶數笨拙的@ rsvp.errors.full_messages.include ?.謝謝你的幫助! – NeutralAngel