如果错误,清除密码字段

时间:2009-05-14 21:00:55

标签: ruby-on-rails

我有一个带有virtual_attributes的常规注册表单:

attr_accessor :password_confirmation

def password
  @password
end

def password=(password)
  @password=self.crypted_password = User.encrypt(@password=pass, create_new_password_salt)
end

我想在密码出错时清除表单的密码字段。我想出了如何使用return在错误时显示密码字段,但如果密码字段中有错误,我无法弄清楚如何使password_confirmation字段返回。

视图很简单

<% form_for @user do |f| %>
  <%= f.password_field :password %>
  <%= f.password_field :password_confirmation %>
<% end %>

1 个答案:

答案 0 :(得分:3)

我目前还不完全清楚您当前的密码验证是如何工作的,但是如何做到这一点:

class User < ActiveRecord::Base
  ...
  validate :password_confirmation_matches

  def password_confirmation_matches
    if password != password_confirmation
      errors.add_to_base("You did not correctly confirm your password")
      self.password_confirmation = self.password = nil
    end
  end
end

这会对你有用吗?