Sha256: e360a0f4063f18504f3b880ee2cf1516e9b76f98b7aa1128f63b679afd146de9
Contents?: true
Size: 827 Bytes
Versions: 1
Compression:
Stored size: 827 Bytes
Contents
module MongoidExt module Encryptor extend ActiveSupport::Concern included do require 'encryptor' end module ClassMethods def encrypted_field(name, options = {}) key = options.delete(:key) raise ArgumentError, ":key option must be given" if key.nil? field(name, options) alias_method :"#{name}_encrypted", name define_method(name) do value = [send(:"#{name}_encrypted").to_s].pack('H*') return if value.blank? Marshal.load(::Encryptor.decrypt(value, :key => key)) end define_method("#{name}=") do |v| marshaled = Marshal.dump(v) enc_value = ::Encryptor.encrypt(marshaled, :key => key).unpack('H*')[0] attributes[name.to_s] = enc_value end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
mongoid_ext-0.9.0 | lib/mongoid_ext/encryptor.rb |