我正在使用attr_encrypted
gem 添加加密。基本上我所要做的就是添加 gem,并encrypted_column
在添加行之前重命名我的列以具有前缀:
attr_encrypted :reply, key: ENV["ANSWER_CRYPT_KEY"]
到我的模型。现在一切正常,但是我正准备将其推送到生产环境中,并且会遇到一些问题,因为那里的值没有加密 - 有没有我可以在我的 rails c 中运行的命令来循环它们并加密他们?
我正在使用attr_encrypted
gem 添加加密。基本上我所要做的就是添加 gem,并encrypted_column
在添加行之前重命名我的列以具有前缀:
attr_encrypted :reply, key: ENV["ANSWER_CRYPT_KEY"]
到我的模型。现在一切正常,但是我正准备将其推送到生产环境中,并且会遇到一些问题,因为那里的值没有加密 - 有没有我可以在我的 rails c 中运行的命令来循环它们并加密他们?
您也不需要重命名数据库中的列;相反,您可以使用gem:attribute
的选项。attr_encrypted
作为参考,您可以在 此处查看其文档。
我建议通过将reply
列重命名为old_reply
. 您可以运行迁移来做到这一点:
def up
rename_column :your_table, :reply, :old_reply
Model.reset_column_information
Model.find_each do |instance|
model.reply = model.old_reply #this will set the encrypted_reply based on attr_encrypted
model.save!
end
end
一旦你确定所有的加密值都设置好了,你可以运行另一个迁移来移除old_reply