11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/attr_encrypter/accessors.rb', line 11
def attr_encrypter(keychain, *attributes)
attr_encrypter = AttrEncrypter.new(keychain)
attributes.each do |attribute|
reader = "#{attribute}"
writer = "#{attribute}="
digest_reader = "#{attribute}_digest"
digest_writer = "#{attribute}_digest="
define_method reader do
digest = send(digest_reader)
if digest.is_a?(String)
attr_encrypter.decrypt(digest)
end
end
define_method writer do |raw|
if raw.is_a?(String)
send(digest_writer, attr_encrypter.encrypt(raw))
else
send(digest_writer, nil)
end
end
end
end
|