0

attr_encryptedデータベースに保存する前に、一部のデータを隠蔽しようとしています。後でロガー出力を処理する必要がありますが、現時点では、送信されたフォームからフィールド データを取得し、暗号化して保存したいだけです。

これが私のモデルです:

class Agreement < ApplicationRecord
  attr_encrypted :test_field, key: :encryption_key

  private

  def encryption_key
      ENV['super_secret_key']
  end
end

コメントアウトするprivateと、すべてが期待どおりに機能しているように見えます。しかし、私は明らかにその情報へのパブリック アクセスを許可したくないので (スーパー シークレット キーを知っています)、それを非公開にしたいと考えています。ただし、含めるprivateとエラーが発生します。具体的には: NoMethodError (undefined method 'bytesize' for :encryption_key:Symbol). 私が掘り下げたattr_encryptedのは、プライベートメソッドが適切にアクセスされていないため、キーが渡されていないためにエラーがスローされていることです。

理論的には、メソッドを呼び出すのではなくattr_encrypted設定することもできkey: ENV['super_secret_key']ますが、ここでの目標は、対応するデータベース テーブルを使用して新しいクラスを実際に作成することです。これにより、キーを保存、保存、ローテーションできます。追加のセキュリティ層のための環境変数によって。

だから私の本当の質問は、私のプライベートメソッドで何が起こっているのprivateか、モデルの範囲内であってもイライラするのはなぜですか? 私は非常に基本的に間違ったことをしていると思いますが、これを行う他の例にも従ったので、私のエラーに関するガイダンスは大歓迎です!

4

1 に答える 1