2012-07-08 51 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

相关问题