如何使用Ruby on Rails加密现有数据?

eh57zj3b  于 2023-08-04  发布在  Ruby
关注(0)|答案(1)|浏览(127)

我想从我的数据库中加密一些表的一些字段。如果我将encrypts :'field_name'添加到模型类中,它将不会加密已经添加到数据库中的数据。我想我必须写一个迁移来完成这个任务。我应该使用哪些方法或Rails模块?我在Rails指南中的加密中找不到它。- 谢谢-谢谢
我试着阅读Rails指南和文档,但没有帮助。

lnxxn5zx

lnxxn5zx1#

将新列添加到模型的数据库表中,并配置模型以加密该新列。

# in a migration
add_column :model_name, :attribute_name_new, :string

# in the model
encrypts :attribute_name_new

字符串
设置好后,将数据从旧列复制到新的加密列:

# in a Rake task or simply in the Rails console:
ModelName.find_each do |record|
  record.update(attribute_name_new: record.attribute_name)
end


最后一步,删除旧列并将新列重命名为原始属性名称。

# in a migration
remove_column :model_name, :attribute_name
rename_column :model_name, :attribute_name_new, :attribute_name


根据数据库表的大小以及运行这些步骤时是否可以短暂停机,您可能需要或不需要对模型进行额外更改,以使两列在更长的时间内保持同步。

相关问题