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
か、モデルの範囲内であってもイライラするのはなぜですか? 私は非常に基本的に間違ったことをしていると思いますが、これを行う他の例にも従ったので、私のエラーに関するガイダンスは大歓迎です!