首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >validates_confirmation_of :密码不会被触发

validates_confirmation_of :密码不会被触发
EN

Stack Overflow用户
提问于 2011-09-24 11:56:08
回答 1查看 2.2K关注 0票数 5

我有一个非常基本的管理模式:

代码语言:javascript
复制
class Admin < ActiveRecord::Base
  has_secure_password
  validates_uniqueness_of :email
  attr_accessible :email, :password, :password_confirmation
end

根据手册 has_secure_password还添加了一个validates_confirmation_of :password。如果我是正确的,validates_confirmation_of应该总是出错,如果:password:password_confirmation不匹配--即使:password_confirmationnil

我正在用RSpec进行测试,这个测试失败了,并告诉我admin 有效的:

代码语言:javascript
复制
admin = Admin.new
admin.email = 'test@example.info'
admin.password = 'secret'
admin.should be_invalid

这一次通过:

代码语言:javascript
复制
admin = Admin.new
admin.email = 'test@example.info'
admin.password = 'secret'
admin.password_confirmation = ''
admin.should be_invalid

那我到底做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-24 12:01:35

这是has_secure_password的代码

代码语言:javascript
复制
# File activemodel/lib/active_model/secure_password.rb, line 32
def has_secure_password
  attr_reader :password

  validates_confirmation_of :password
  validates_presence_of     :password_digest

  include InstanceMethodsOnActivation

  if respond_to?(:attributes_protected_by_default)
    def self.attributes_protected_by_default
      super + ['password_digest']
    end
  end
end

正如您所看到的,它从不确保发送密码确认。但是,您可以自己添加,只要页面上有表单字段,空字符串就会被发送,如果没有填充。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7538845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档