我想安装以下gem https://github.com/attr-encrypted/attr_encrypted来加密我现有模型的某些字段。 例如,具有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
按照上述步骤,当我在控制台中查看数据库时,我仍然有一个名为“ first_name”和“ last_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和last_name的列:
rails generate migration RemoveNonEncryptedDateFromUser first_name:string last_name:string
是否可以从模型中复制未加密的字段first_name和last_name并直接对其进行加密,还是必须对所有字段手动进行加密?
非常感谢您的建议!