在 Rails 7 中使用 attr_encrypted

Bra*_*ira 7 ruby ruby-on-rails attr-encrypted ruby-on-rails-7

我们已将应用程序升级到 Rails 7,现在我们遇到了 attr_encrypted gem 的问题。当我们尝试启动 Rails 服务器/控制台时,我们收到以下错误:

gems/ruby-3.0.2/gems/attr_encrypted-3.1.0/lib/attr_encrypted.rb:176:in `block in attr_encrypted': undefined method `[]=' for nil:NilClass (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

如果我们恢复到 Rails 6,错误就会消失,有人遇到过同样的问题吗?

Bra*_*ira 9

所以我终于弄清楚发生了什么事。

Rails 7.0 有自己的加密,attr_encrypted gem 和rails 7 都引用该变量,encrypted_attributes并且rails 7 变量优先,使得gem 无用。attr_encrypted gem 上有一个 PR 可以解决这个问题,但是这个 gem 已经很多年没有更新了,我怀疑现在会更新。

GoRails 发布了有关如何将数据从使用 attr_encrypted 迁移到使用 Rails 7 加密的教程。我不想付费,所以我查看了本教程的 git 存储库。

他们所做的是在迁移中自行解密数据并手动更新新的加密字段。

这是他们迁移的链接。 https://github.com/gorails-screencasts/migrate-attr_encrypted-to-rails-7-encryption/blob/master/db/migrate/20211005214633_migrate_encrypted_attributes.rb