设计密码确认错误

时间:2011-08-21 20:10:19

标签: ruby-on-rails devise

我正在尝试实施更改密码视图。目前我正在测试如果我输入密码和password_confirmation不匹配,我会在表单上收到红色错误消息。我得到一个追溯说“验证失败:密码与确认不匹配”,但我没有看到任何基于自然形式的错误消息......

另一个可能有用的信息是我的User模型接受另一个模型(contact_info)的嵌套属性。这些东西都很好。

以下是相关的代码位。从我的模特:

class User < ActiveRecord::Base
  devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable
  ...
end

以下是我的haml视图中的代码:

= form_for @user do |user|
  -if @user.errors.any?
  #error_explanation
    %h2= "#{pluralize(@user.errors.count, "error")} prohibited this user from being saved:"
    %ul
      - @user.errors.full_messages.each do |msg|
        %li= msg

最后,这是来自我的控制器的一点:

...
if @user.update_attributes!(params[:user])
  format.html { redirect_to(users_url, :notice => 'User was successfully updated.') }
  format.xml  { head :ok }
else
  ...

我能够验证这些字段是否在传入的参数中:

Parameters: {"user"=>{"last_name"=>"Jim", "first_name"=>"Dandy", "email"=>"jim@dandy.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"

我怀疑我错过了一些相当简单的东西......但对于我的生活,我无法弄清楚它可能是什么。

1 个答案:

答案 0 :(得分:0)

事实证明,真正缺少的是当前密码 - 我只有密码和password_confirmation字段,而Devise也想要一个current_password字段。

一旦我有了这个字段,我就调用了update_with_password而不是update_attributes,整个事情很好地融合在一起。