使用 attr_encrypted 更新现有的未加密记录



如何更新以前使用 gem attr_encrypted未加密的现有记录。

我目前在一个名为AppointmentNote的表中text列,它只是一个字符串。我现在想要一个名为note的列,该列已加密(使用 attr_encrypted(。

我添加了列

encrypted_noteencrypted_note_iv

当我AppointmentNote.create(note: "blah")它正确加密时,这很有效,并且对该记录的任何进一步更新都运行良好。

问题出在迁移之前创建的记录。如何将列text中的所有数据迁移到新的加密列encrypted_noteencrypted_note_iv

这是模型

class AppointmentNote < ApplicationRecord
attr_encrypted_options.merge!(encode: true)
attr_encrypted :note, key: SOME_KEY
...
end

如果我做我认为显而易见的解决方案是它只是回滚AppointmentNote.first.update(note: "rawr")

谢谢

您应该能够通过保存来更新它们。像这样:

rails g migration update_apartment_notes_note_for_encryption

打开生成的文件。

def change
AppointmentNote.find_each do |apartment_note|
apartment_note.save 
end
end

rake db:migrate

注意:如果您有大量记录,则使用find_each比all更明智。这里的目标是迭代它们。

相关内容

  • 没有找到相关文章

最新更新