Module: AttrEncryption::InstanceMethods

Defined in:
lib/attr_encryption.rb

Instance Method Summary collapse

Instance Method Details

#decrypt(attribute, encrypted_value) ⇒ Object

Decrypts a value for the attribute specified using options evaluated in the current object’s scope

Example

class User
  attr_accessor :secret_key
  attr_encrypted :email, :key => :secret_key

  def initialize(secret_key)
    self.secret_key = secret_key
  end
end

@user = User.new('some-secret-key')
@user.decrypt(:email, 'SOME_ENCRYPTED_EMAIL_STRING')


298
299
300
# File 'lib/attr_encryption.rb', line 298

def decrypt(attribute, encrypted_value)
  self.class.decrypt(attribute, encrypted_value, evaluated_attr_encrypted_options_for(attribute))
end

#encrypt(attribute, value) ⇒ Object

Encrypts a value for the attribute specified using options evaluated in the current object’s scope

Example

class User
  attr_accessor :secret_key
  attr_encrypted :email, :key => :secret_key

  def initialize(secret_key)
    self.secret_key = secret_key
  end
end

@user = User.new('some-secret-key')
@user.encrypt(:email, '[email protected]')


317
318
319
# File 'lib/attr_encryption.rb', line 317

def encrypt(attribute, value)
  self.class.encrypt(attribute, value, evaluated_attr_encrypted_options_for(attribute))
end

#unencrypted_attributesObject



321
322
323
324
325
326
327
328
329
330
331
# File 'lib/attr_encryption.rb', line 321

def unencrypted_attributes
  attributes.each_with_object({}) do |a, new_hash|
    key = a.first
    value = a.last
    if key =~ /\A(.+)_enc\z/
      key = $1
      value = decrypt(key.to_sym, value)
    end
    new_hash[key] = value
  end   
end