2012-10-05 168 views
0

我的用户模型已经与密码确认验证Ruby on Rails的password_confirmation验证

一个问题:

validates :password, :confirmation => true 

,并在视图new.html.erb:

<%= form_for(@user) do |f| %> 
    <div class="field"> 
    <%= f.label :password %><br /> 
    <%= f.password_field :password %><br /> 
    <%= f.label :password_confirmation %><br /> 
    <%= f.password_field :password_confirmation %><br /> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

所以对于任何插入的数据验证抛出错误。 我认为有什么问题:password_confirmation和RoR收到零价值 它可能吗?我能怎么做?

+0

你能粘贴错误? – Rob

+0

无法根据您发布的内容来帮助您。我们将不得不看你如何试图给你的模型分配参数。另外,你不应该这样做。在Rails 3+中使用['has_secure_password'](http://www.farbeyondprogramming.com/2011/05/rails-user-authentication-using-has_secure_password/)。 – meagar

+0

它不是一个错误... 当我插入密码和password_confirmation表单字段,并点击'提交'保留在同一页面,并出现消息错误,无法保存:密码和他的确认是不同的。 – Dabidi

回答

1

试试这个

class User < ActiveRecord::Base 
    validates :password, :presence =>true, :confirmation =>true 
    validates_confirmation_of :password 
end 

旨在将控制器从视图中取数据,并尝试进行保存,这是该视图的代码:

<%= form_for(@user) do |f|%> 
    <% if @user.errors.any? %> 
    .... 
    .... 
    <% end %> 
    <%= f.label :email %><br /> 
    <%= f.text_field :email %><br /> 
    <%= f.label :password %><br /> 
    <%= f.password_field :password %><br /> 
    <%= f.label :password_confirmation %><br /> 
    <%= f.password_field :password_confirmation %> 
    <%= f.submit %> 
<% end %> 


NOTE: This check is performed only if password_confirmation is not nil, and by default only on save. 
To require confirmation, make sure to add a presence check for the confirmation attribute: 

http://ar.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html

+0

我尝试这个,但有同样的问题! – Dabidi

+0

我更新代码请尝试 –

+0

我看...但它似乎是第一个版本,不是吗? – Dabidi