encryption_key
が呼び出されattr_encrypted
たときが:passphrase
設定されていません。暗号化キーは、salt の sha1 ハッシュになります。パスフレーズとソルトの sha1 ハッシュにする必要があります。
ソルトは作成時に生成され、データベースに保存されます。
:passphrase
暗号化キーで仮想属性を使用するにはどうすればよいですか?
助言がありますか?
簡潔にするために、一連のコードを省略しました。
class Employee < ActiveRecord::Base
require 'digest/sha1'
attr_accessor :passphrase, :ssn
attr_accessible :passphrase, :ssn
attr_encrypted :ssn, :key => proc { |employee| "#{employee.encryption_key}" }
def encryption_key
unless salt?
self.salt = Digest::SHA1.hexdigest(generate_salt)
end
Digest::SHA1.hexdigest([passphrase, self.salt].join)
end
end
class EmployeesController < ApplicationController
def create
@employee = @parent.employees.new(params[:employee])
if @employee.save
redirect_to @parent
else
render action: "new"
end
end
end
前もって感謝します!