0

如何验证密码的确认?因此,如果密码不匹配,用户会收到错误消息。与函数“validates_presence_of”相同,会在字段是否为空时给出错误。可悲的是,这段代码对我不起作用。

<div class="field_left">
  <%= f.label :password, "Password" %><br />
  <%= f.password_field :password %>
</div>
<div class="field">
  <%= f.label :password_confirmation, "Password retry<span>*</span>".html_safe %><br />
  <%= f.password_field :password_confirmation %>
</div>

class User < ActiveRecord::Base
  validates_confirmation_of :password
  attr_accessible :password, :password_confirmation
  attr_accessor :password
end

有人能帮我吗?

非常感谢您!

4

5 回答 5

2

我的应用程序中运行良好的代码:

class User < ActiveRecord::Base
  validates_confirmation_of :password
  attr_accessible :password, :password_confirmation
  attr_accessor :password
end

您必须设置 attr_accessor :password

于 2011-08-03T11:52:58.270 回答
1

在任何人可以正确回答您的问题之前,您必须清楚地解释什么不起作用。简单地说它“不起作用”并不能帮助您获得所需的答案。请清楚地解释您期望发生的事情,然后解释实际发生的事情,并用相关信息(例如日志文件条目和相关源代码)进行备份。

如果您可以提供此信息,我会很乐意更新此答案,为您指明正确的方向。

更新

您需要为您的用户提供一种身份验证方法。有很多方法可以做到这一点,这完全取决于您如何加密密码。我可以建议你看一下这个 Railscast。它解释了一种非常好的方式来验证您的用户,并且几乎是事实上的 Rails 方式,被许多 gems 使用,例如 Devise

http://railscasts.com/episodes/250-authentication-from-scratch

于 2011-08-03T11:49:53.637 回答
0

问题是我实现了新方法,所以:

@user = User.new (:last_name => params[:user][:last_name], :first_name => params[:user][:first_name] and so on.

代替:

@user = User.new(params[:user]

然后它适用

validates_confirmation_of :password
attr_accessible :password_confirmation
attr_accessor :password
于 2011-08-08T14:02:11.113 回答
0

看起来您的 user.rb 没有attr_accessor :password_confirmation. 除了白名单之外,您还需要它attr_accessible

于 2011-07-14T16:13:57.087 回答
0

你错过了:

attr_accessible :password, :password_confirmation

坦率的暴雪是对的

于 2011-07-14T10:36:59.857 回答