私は HIPAA コンプライアンスを必要とするアプリを構築しています。つまり、特定の接続をデータベースで自由に表示できるようにすることはできません (患者とその推奨事項)。
これらのテーブルは、私のアプリのテーブルを介して接続されています。これは、 attr_encryptedpatients_recommendations
を介して暗号化を追加するまでうまくいきました。暗号化と復号化 (および関連するオーバーヘッド) の量を削減するために、テーブル内の を単純に暗号化できるようにしたいと考えています。ただし、データ型を に変更し、列名をに変更すると、データベースを再シードしようとすると、アプリが次のエラーで中断します。patient_id
patients_recommendations
string
encrypted_patient_id
不明な属性 `patient_id' を書き込めません
これは、結合がモデルを経由するのではなく、列を直接探しているためだと思います (モデルを使用するとおそらく遅くなります)。Rails でモデルを通過させる方法はありますか (attr_encrypted
必要なヘルパー メソッドを追加した場所)。
アップデート:
回避策を見つけるために、次のように before_save をモデルに追加してみました。
before_save :encrypt_patient_id
...
private
def encrypt_patient_id
self.encrypted_patient_id = PatientRecommendation.encrypt(:patient_id, self.patient_id)
self.patient_id = nil
end
ただし、これも機能せず、同じエラーが発生しますunknown attribute
。どちらの解決策も私にとってはうまくいきますが (最初の解決策は主な問題に対処します)、before_save
関連付けを介して作成されたときに が呼び出されない理由はありますか?