加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – validates_confirmation_of:密码不会被触发

发布时间:2020-12-17 03:13:25 所属栏目:百科 来源:网络整理
导读:我有一个非常基本的Admin模型: class Admin ActiveRecord::Base has_secure_password validates_uniqueness_of :email attr_accessible :email,:password,:password_confirmationend According to the manual has_secure_password还添加了validates_confirm
我有一个非常基本的Admin模型:

class Admin < ActiveRecord::Base
  has_secure_password
  validates_uniqueness_of :email
  attr_accessible :email,:password,:password_confirmation
end

According to the manual has_secure_password还添加了validates_confirmation_of:密码.如果我是正确的,如果:password和:password_confirmation不匹配,则validates_confirmation_of应始终出错 – 即使:password_confirmation为nil.

我正在使用RSpec进行测试,此测试失败并告诉我管理员是有效的:

admin = Admin.new
admin.email = 'test@example.info'
admin.password = 'secret'
admin.should be_invalid

这个通过:

admin = Admin.new
admin.email = 'test@example.info'
admin.password = 'secret'
admin.password_confirmation = ''
admin.should be_invalid

那么,我做错了什么?

解决方法

这是has_secure_password的代码:

# 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

如您所见,它永远不会确保发送密码确认.但是,您可以自己添加,只要页面上有表单字段,如果未填充,则会发送一个空字符串.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读