has_secure_password阻止将布尔值设置为true

时间:2012-07-08 19:44:28

标签: ruby-on-rails email-verification

我想在使用has_secure_password和authenticate方法设置登录/注册和会话后进行电子邮件确认。 我有一个用户模型,我添加了一个确认的布尔值。创建用户时,我将其确认的布尔值设置为false,并向他们发送带有链接的电子邮件。单击该链接会生成对/ users /:id / confirm的GET请求,并在users_controller中执行以下的“confirm”操作代码:


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 个答案:

答案 0 :(得分:1)

尝试使用update_attribute而不是update_attributes。

  @user.update_attribute(:confirmed, true)