gpt4 book ai didi

ruby-on-rails - validates_confirmation_of :password doesn't get triggered

转载 作者:行者123 更新时间:2023-12-04 05:34:38 24 4
gpt4 key购买 nike

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

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 .如果我是对的 validates_confirmation_of如果 :password 应该总是出错和 :password_confirmation不匹配 - 即使 :password_confirmationnil .

我正在使用 RSpec 进行测试,但此测试失败并告诉我 admin 有效的:
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

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

关于ruby-on-rails - validates_confirmation_of :password doesn't get triggered,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7538845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com