【发布时间】:2016-04-12 14:17:09
【问题描述】:
在 Michael Hartl 的教程中,陈述如下。
class User < ActiveRecord::Base
attr_accessor :remember_token
before_save { self.email = email.downcase }
validates :name, presence: true, length: { maximum: 50 }
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, length: { maximum: 255 }
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
has_secure_password
validates :password, presence: true, length: { minimum: 6 }, allow_nil: true
end
如果您担心清单 9.10 可能允许新用户使用空密码进行注册,请回想一下第 6.3.3 节中的 has_secure_password 包含一个单独的存在验证,该验证专门捕获 nil 密码。
我的问题是,如果 has_secure_password 验证允许测试通过,它是如何工作的?我不明白,显然 has_secure_password 验证并没有“捕捉”这条规则来绕过空密码。
此外,rails 怎么知道不给用户设置和保存空密码?请帮帮我。
【问题讨论】:
标签: ruby-on-rails ruby validation