Ruby on rails 使用attr_encrypted(覆盖旧数据)使用新密钥加密新数据

Ruby on rails 使用attr_encrypted(覆盖旧数据)使用新密钥加密新数据,ruby-on-rails,encryption,openssl,attr-encrypted,Ruby On Rails,Encryption,Openssl,Attr Encrypted,我必须编写一个脚本,用虚拟(但有效)数据替换现有数据。脚本应该只填充每个记录上已经填充的字段。我不应该将虚拟数据放入以前不存在数据的字段中。任何人都可以帮助创建脚本吗 我使用的是attr_encrypted,我希望使用新密钥用新数据覆盖现有数据。我该怎么做 我的示例代码供您参考: 许可证.where.not(许可证编号:nil)。每个do |编号| number.update_属性(:许可证编号,伪造者::编号。编号(6)) 结束 尝试更新时,我收到OpenSSL::Cipher::cipher

我必须编写一个脚本,用虚拟(但有效)数据替换现有数据。脚本应该只填充每个记录上已经填充的字段。我不应该将虚拟数据放入以前不存在数据的字段中。任何人都可以帮助创建脚本吗

我使用的是
attr_encrypted
,我希望使用新密钥用新数据覆盖现有数据。我该怎么做

我的示例代码供您参考:

许可证.where.not(许可证编号:nil)。每个do |编号|
number.update_属性(:许可证编号,伪造者::编号。编号(6)) 结束

尝试更新时,我收到
OpenSSL::Cipher::cipherror:bad decrypt
错误
我认为这是因为
attr_encrypted
首先尝试
解密
,但由于密钥不同,这显然不起作用。有没有办法用新密钥写入新数据和
iv

您遇到的错误与您编写的代码没有直接关系。这个脚本看起来不错(我们可能会改进它,但这不是错误的根源),我在这一点上支持@Joel_Blum。我猜原因实际上是您的
attr\u加密机
实现。与Faker或此脚本无关。可能是因为您最近添加了
attr_encryptor
,并且数据库中的数据早于此,并且未加密或使用其他算法/salt/密钥加密?您遇到的错误与您编写的代码没有直接联系。这个脚本看起来不错(我们可能会改进它,但这不是错误的根源),我在这一点上支持@Joel_Blum。我猜原因实际上是您的
attr\u加密机
实现。与Faker或此脚本无关。可能是因为您最近添加了
attr_encryptor
,并且数据库中的数据早于此,并且未加密或使用其他算法/salt/密钥加密?