将 rails 7 中的加密列迁移到确定性列

Migrate encrypted column in rails 7 to deterministic

提问人:Mitchell 提问时间:10/3/2023 更新时间:10/3/2023 访问量:41

问:

我们有一个加密的列属性,我们需要查询它。该列由 ActiveRecord(非确定性)加密。所以解密一行是没有问题的。但是,无法查询多个/所有行的属性。

是否可以将非确定性列迁移到确定性列?或者在最坏的情况下,完全删除列的加密?

寻找可能的迁移,确定我不是第一个遇到这个问题的人。但是,我找不到任何相关的东西。还尝试将 deterministic: true 添加到要测试的模型中。但是,它似乎适用于新数据,而不适用于已经加密的数据。

Ruby-on-Rails 轨道-ActiveRecord

评论

0赞 mechnicov 10/3/2023
是的,这是可能的——可能不是你想要的答案。在问题中添加一些代码,那么答案将更具针对性

答:

2赞 Greg 10/3/2023 #1

(完全披露:我没有解决您确切问题的实践经验)

还尝试将 deterministic: true 添加到要测试的模型中。但是,它似乎适用于新数据,而不适用于已经加密的数据。

这让我认为你最好的选择是将其视为一个全新的列,而不是试图“修复”现有的列:

使用确定性方法添加新列。编写一个迁移,将数据从非确定性迁移读取到确定性迁移中。将代码切换为使用新列并删除旧列。

评论

2赞 max 10/4/2023
您始终可以采用旧的 switcheroo 方法,在数据迁移到旧名称后重命名新列。