2012-07-08 72 views
0

我想在使用has_secure_password和authenticate方法設置登錄/註冊和會話之後進行電子郵件確認。 我有一個用戶模型,並添加了一個確認的布爾值。當用戶創建時,我將他們的確認布爾值設置爲false,並向他們發送帶有鏈接的電子郵件。點擊鏈接可生成一個GET請求/用戶/:ID /確認,並執行在users_controller「確認」操作的代碼如下:has_secure_password防止將布爾值設置爲true


def confirm 
    @user = User.find(params[:id]) 
    @user.update_attributes(confirmed: true) 
    if @user.save 
     sign_in(@user) 
     flash[:success] = "Your account has been successfully confirmed" 
    else 
     flash[:error] = "There has been a problem confirming your account " 
    end 
    redirect_to root_path 
    end 

很簡單(我會做確認標誌後) 。我的問題是我的用戶永遠不會被保存。

@user.errors.full_messages
回報:

["Password is too short", "Password confirmation can't be blank"] 

如何更改用戶對象,而無需修改自己的密碼,每次? 任何幫助將不勝感激。

謝謝!

回答

1

嘗試使用update_attribute而不是update_attributes。

@user.update_attribute(:confirmed, true) 
+1

...並且不保存兩次。 'update_attribute'已經保存 - 不需要調用'@ user.save'。取消後者並檢查'update_attribute'的結果。 – jdoe 2012-07-08 20:40:43

+0

非常感謝Kyle。這工作。 – Myna 2012-07-08 23:02:49

相關問題