如何在rails 3.2中使用确认密码验证密码
我的代码不起作用
您可以告诉我的错误
我尝试了很多改变控制器中代码的变体。
密码保存但未验证密码确认字段和密码字段。
请帮帮我,帮帮我)))
视图
<%= form_for :password, :url => { :action => "change_password" }, :id => @user do |f| %>
<% if @user.errors.any? %>
<div class="error_messages">
<h2>Form is invalid</h2>
<ul>
<% for message in @user.errors.full_messages %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<%= f.password_field :password %>
<%= f.password_field :password_confirmation %>
<%= f.submit "Save", :class => "button blue" %>
<% end %>
用户控制器
def change_password
@page_title = "Changing Zetfon account password"
@user = current_user
if request.post?
@user.password = Digest::SHA1.hexdigest(params[:password][:password])
if @user.save
redirect_to :action => 'profile'
flash[:status] = "Your password was changed. Next time you sign in use your new password."
else
flash[:status] = _('Your password not changed')
render :action => "change_password"
end
end
end
用户模型
validates_confirmation_of :password
attr_accessible :password_confirmation
attr_accessor :password
答案 0 :(得分:10)
将以下行添加到模型中
validates :password, confirmation: true
答案 1 :(得分:3)
仅仅使用has_secure_password
为时已晚?您可以在此RailsCast中了解它:
http://railscasts.com/episodes/270-authentication-in-rails-3-1
我不确定你为什么if request.post?
。这不是由您的路线决定的吗?
根据validates_confirmation_of
的文档,我认为您可能需要添加:
validates_presence_of :password_confirmation, :if => :password_changed?
这是文档:
http://apidock.com/rails/ActiveModel/Validations/HelperMethods/validates_confirmation_of
文档似乎表明您不需要attr_accessible :password_confirmation
。
我希望有所帮助。