我怎么能有时需要密码,有时候不需要使用has_secure_password?

时间:2012-08-11 20:19:48

标签: ruby-on-rails

我的应用可让人们使用密码或Facebook注册。

即使我从用户模型中删除了密码验证,我也会在用户模型上获得:password_digest => ["can't be blank"]

我使用has_secure_password

如何才能password_digest不需要?

2 个答案:

答案 0 :(得分:7)

更近期的提交已向has_secure_password添加了一个选项哈希,允许跳过password_digest字段的验证。你这样使用它:

 has_secure_password :validations => false

不幸的是,这在3.2.13版本的rails中不存在。请参阅https://stackoverflow.com/a/16706045/1356792

答案 1 :(得分:6)

你做不到。 has_secure_password会自动为您的模型添加两个验证器:

validates_confirmation_of :password
validates_presence_of     :password_digest

相反,为没有密码的用户提供password_digest的虚拟值:

user.password = user.password_confirmation = ""
user.password_digest = "facebook-authorized account"

这是安全的,因为没有密码可以散列以匹配该摘要。