Ayr*_*rad 13 ruby ruby-on-rails devise ruby-on-rails-4.2
从has_secure_password用户对象进行交互时,从设置迁移会导致控制台中出现以下错误:
.rvm/gems/ruby-2.4.1/gems/devise-4.4.0/lib/devise/models/database_authenticatable.rb:166:in `password_digest'
Run Code Online (Sandbox Code Playgroud)
我理解这是因为devise使用了这个pasword_digest函数,所以它与's 使用的password_digest列不兼容.active recordhas_secure password
解决方案是password_digest从数据库中删除列,但我不想丢失现有用户的密码.
我应该删除encrypted_password创建的列设计,然后进行迁移以重命名password_digest为encrypted_password然后更新现有用户的密码,还是有更合适的解决方案?
1>将列重命名password_digest为encrypted_password。
2>在色器件在初始config/initializers/devise.rb集
config.stretches = 11 # this is default
Run Code Online (Sandbox Code Playgroud)
3> bcrypt是默认的哈希或加密算法(因此无需更改)。
请参阅devise配置模板。
我以前没做过。但在我看来,让我们先尝试备份数据库。然后执行迁移,将password_digest更改为encrypted_password。不用担心,因为如果迁移不起作用,您可以回滚迁移
| 归档时间: |
|
| 查看次数: |
635 次 |
| 最近记录: |