0

我正在使用attr_encryptedgem 添加加密。基本上我所要做的就是添加 gem,并encrypted_column在添加行之前重命名我的列以具有前缀:

  attr_encrypted :reply, key: ENV["ANSWER_CRYPT_KEY"]

到我的模型。现在一切正常,但是我正准备将其推送到生产环境中,并且会遇到一些问题,因为那里的值没有加密 - 有没有我可以在我的 rails c 中运行的命令来循环它们并加密他们?

4

2 回答 2

0

您也不需要重命名数据库中的列;相反,您可以使用gem:attribute的选项。attr_encrypted作为参考,您可以在 此处查看其文档。

于 2015-11-24T11:23:44.163 回答
0

我建议通过将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

于 2015-11-09T14:33:22.120 回答