Module: AttrEncrypter::Accessors::ClassMethods

Defined in:
lib/attr_encrypter/accessors.rb

Instance Method Summary collapse

Instance Method Details

#attr_encrypter(keychain, *attributes) ⇒ Object



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