新密码和确认密码不应与当前密码相同。如何在RubyonRails中限制它?

新密码和确认密码不应与当前密码相同。如何在RubyonRails中限制它?,ruby,ruby-on-rails-4,Ruby,Ruby On Rails 4,我想在RubyonRails中验证当前密码、新密码和确认密码。当我单击“更改密码”时,它将要求输入当前密码、新密码和确认密码。但是,当我意外地在“当前密码”和“新密码”字段中输入相同的密码时,它不应该允许输入相同的密码。它应该抛出一些错误消息,如“当前密码和新密码不能相同”。但我真的不知道如何在RubyonRails中做到这一点。如果你知道答案,请任何人帮助我。提前感谢我将在我的users\u controller.rb文件中为我的更新方法添加自定义行。我想它现在看起来像这样 def updat

我想在RubyonRails中验证当前密码、新密码和确认密码。当我单击“更改密码”时,它将要求输入当前密码、新密码和确认密码。但是,当我意外地在“当前密码”和“新密码”字段中输入相同的密码时,它不应该允许输入相同的密码。它应该抛出一些错误消息,如“当前密码和新密码不能相同”。但我真的不知道如何在RubyonRails中做到这一点。如果你知道答案,请任何人帮助我。提前感谢

我将在我的users\u controller.rb文件中为我的更新方法添加自定义行。我想它现在看起来像这样

def update
  @user = User.find(params[:id])

  if @user.update(usere_params)
    redirect_to @user
  else
    render 'edit'
  end
end
我会在这个文件中添加几行,确保新密码和当前密码不相同,如果是,则返回一个验证错误

def update
  @user = User.find(params[:id])

  if params[:user][:new_password] == prams[:user][:current_password]
    @user.errors.add(:new_password, 'Can not use current password')
  end

  if !@user.errors.any? and @user.update(user_params)
    redirect_to @user
  else
    render 'edit'
  end
end

这将导致
如果@user.errors.any?和@user.update(user_params)
为false(因为已经有错误),只需运行
渲染“编辑”
行(如果您以这种方式设置,它通常会显示您的验证错误)。

您是否将密码(我希望加密)存储在数据库或后端?哦,我的上帝!!!这对我很有用…太好了…谢谢你比你更谢谢你…非常感谢Ken Stipek。。你做得很好…你把我从一个大麻烦中救了出来。谢谢