Rails中的validates_confirmation_of阻止我保存新对象

时间:2010-01-16 07:24:29

标签: ruby-on-rails models

在我的User.rb模型中,我有这一行:

validates_confirmation_of:password,:message => “你的密码应该匹配。”

然后当用户注册时,密码匹配,一切都很好......直到我想要向用户对象添加更多信息,然后再次保存。但是运行@ user.save会返回我的密码不匹配的错误。在我的注册控制器方法中,我有以下几行:

  @user = User.new(params[:user])
  if request.post?
    if !@user.save
      @errors = @user.errors
    else

      # crucial user details:
      @user.salt = [Array.new(6){rand(256).chr}.join].pack("m").chomp 
      @user.password = encrypted_password(@user.password, @user.salt) #hash this
      if !@user.save
        puts "error for some reason in signup"
        puts @user.errors.inspect
      end

经过检查,@ users.errors.inspect打印出来:#[“你的密码应该匹配。”]}。他们这样做了,否则,它永远不会通过第一次.save调用。关于我在这里做错了什么的建议?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

这解决了它:

validates_confirmation_of:password,:on => :create,:message => “你的密码应该匹配。”