module AttrCipher::ClassMethods
Public Instance Methods
attr_cipher(*args, secret: AttrCipher.secret, cipher: AttrCipher.cipher, serialize: false)
click to toggle source
# File lib/attr_cipher/attr_cipher.rb, line 20 def attr_cipher(*args, secret: AttrCipher.secret, cipher: AttrCipher.cipher, serialize: false) args.each do |attribute| define_cipher_attribute(attribute, secret, cipher, serialize) end end
Private Instance Methods
define_cipher_attribute(attribute, secret, cipher, serialize)
click to toggle source
# File lib/attr_cipher/attr_cipher.rb, line 28 def define_cipher_attribute(attribute, secret, cipher, serialize) define_method attribute do value = instance_variable_get("@#{attribute}") cipher_value = send("#{attribute}_cipher") unless value value = cipher.decrypt(secret, cipher_value, serialize) if cipher_value instance_variable_set("@#{attribute}", value) end define_method "#{attribute}=" do |value| instance_variable_set("@#{attribute}", value) send("#{attribute}_cipher=", nil) send("#{attribute}_cipher=", cipher.encrypt(secret, value, serialize)) if value && value != "" end end