使用attr_encrypted rails加密模型的现有字段

时间:2018-07-24 18:39:45

标签: ruby-on-rails attr-encrypted

我想安装以下gem https://github.com/attr-encrypted/attr_encrypted来加密我现有模型的某些字段。 例如,具有first_name,last_name等的用户模型。 我的应用已部署,所以我不想犯任何愚蠢的错误

我了解如何通过此链接(https://qiita.com/alokrawat050/items/ff6dceec32baa0c8fa57)使用新模型进行处理,但是如何处理现有的db et模型?

我正在考虑执行以下步骤:

  1. 安装宝石
  2. 在我的模型中添加以下行

    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
    
  3. 创建新迁移

    rails g migration AddEncryptedColumnsToUser encrypted_first_name:string encrypted_last_name:string encrypted_first_name_iv:string encrypted_last_name_iv:string 
    
  4. 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并直接对其进行加密,还是必须对所有字段手动进行加密?

非常感谢您的建议!

0 个答案:

没有答案