我有一个非常基本的管理模式:
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_confirmation是nil。
我正在用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那我到底做错什么了?
发布于 2011-09-24 12:01:35
这是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正如您所看到的,它从不确保发送密码确认。但是,您可以自己添加,只要页面上有表单字段,空字符串就会被发送,如果没有填充。
https://stackoverflow.com/questions/7538845
复制相似问题