何时encryption_key
由 调用attr_encrypted
,:passphrase
尚未设置。加密密钥最终是盐的 sha1 散列;它应该是密码和盐的 sha1 哈希。
salt 在创建时生成并保存在数据库中。
如何: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
提前致谢!