Wuk*_*ank 5 validation rspec ruby-on-rails rspec-rails ruby-on-rails-3.1
我有一个非常基本的Admin模型:
class Admin < ActiveRecord::Base
has_secure_password
validates_uniqueness_of :email
attr_accessible :email, :password, :password_confirmation
end
Run Code Online (Sandbox Code Playgroud)
根据手册 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
Run Code Online (Sandbox Code Playgroud)
这个通过:
admin = Admin.new
admin.email = 'test@example.info'
admin.password = 'secret'
admin.password_confirmation = ''
admin.should be_invalid
Run Code Online (Sandbox Code Playgroud)
那么,我做错了什么?
这是以下代码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
Run Code Online (Sandbox Code Playgroud)
如您所见,它永远不会确保发送密码确认.但是,您可以自己添加,只要页面上有表单字段,如果未填充,则会发送一个空字符串.
| 归档时间: |
|
| 查看次数: |
2107 次 |
| 最近记录: |