2

我想安装以下 gem https://github.com/attr-encrypted/attr_encrypted来加密我现有模型的一些字段。例如,带有,等 的User模型。我的应用程序已经部署,所以我不想犯任何愚蠢的错误。first_namelast_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


(已编辑)

按照上述步骤,当我在控制台中查看 db 时,我仍然有first_nameandlast_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_nameand删除列last_name

rails generate migration RemoveNonEncryptedDateFromUser first_name:string last_name:string

有没有办法从模型中复制未加密的字段first_namelast_name直接加密它们,还是我必须手动为所有这些字段进行加密?

4

0 回答 0