我怎么能有时需要密码,有时候不需要使用has_secure_password?
我的应用程序允许人们使用密码或Facebook注册。
即使我从用户模型中删除了密码validation,我也会在用户模型上获得:password_digest => ["can't be blank"]
。
我使用has_secure_password
。
如何才能使password_digest
不需要?
你不能。 has_secure_password
自动为您的模型添加两个validation器:
validates_confirmation_of :password validates_presence_of :password_digest
相反,为没有password_digest
的用户提供password_digest
的虚拟值:
user.password = user.password_confirmation = "" user.password_digest = "facebook-authorized account"
这是安全的,因为没有密码可以被散列以匹配该摘要。
最近的提交已经向has_secure_password
添加了一个选项哈希,它允许跳过password_digest字段的validation。 你这样使用它:
has_secure_password :validations => false
不幸的是,这不存在于3.2.13版本的rails中。 请参阅https://stackoverflow.com/a/16706045/1356792