我想安装以下 gem https://github.com/attr-encrypted/attr_encrypted来加密我现有模型的一些字段。例如,带有,等
的User
模型。我的应用程序已经部署,所以我不想犯任何愚蠢的错误。first_name
last_name
我通过此链接( https://qiita.com/alokrawat050/items/ff6dceec32baa0c8fa57 )了解如何使用新模型进行处理,但是我应该如何处理现有的 db et 模型?
我正在考虑执行以下步骤:
- 安装宝石。
在我的模型中添加以下行:
class User < ActiveRecord::Base secret_key = ENV['DB_COL_ENCRYPTED_KEY'] attr_encrypted :first_name, :key => secret_key attr_encrypted :last_name, :key => secret_key [...] end
创建一个新的迁移:
rails g migration AddEncryptedColumnsToUser encrypted_first_name:string encrypted_last_name:string encrypted_first_name_iv:string encrypted_last_name_iv:string
rake db:migrate
(已编辑)
按照上述步骤,当我在控制台中查看 db 时,我仍然有first_name
andlast_name
字段:
<User id: 2, first_name: "John", last_name: "Doe",
encrypted_first_name: nil, encrypted_last_name: nil,
encrypted_first_name_iv: nil, encrypted_last_name_iv: nil>
如果我做:
User.update first_name: "John", last_name: "Doe"
它正确加密它。
下一步是使用first_name
and删除列last_name
:
rails generate migration RemoveNonEncryptedDateFromUser first_name:string last_name:string
有没有办法从模型中复制未加密的字段first_name
并last_name
直接加密它们,还是我必须手动为所有这些字段进行加密?