module ActionEncrypt::Attribute
Public Instance Methods
has_encrypted(name)
click to toggle source
# File lib/action_encrypt/attribute.rb, line 18 def has_encrypted(name) class_eval <<-CODE, __FILE__, __LINE__ + 1 def #{name} #{name}_encrypted_field.blob end def #{name}=(value) #{name}_encrypted_field.blob = value end def #{name}_encrypted_field super || build_#{name}_encrypted_field end CODE has_one :"#{name}_encrypted_field", -> { where(name: name) }, class_name: "ActionEncrypt::EncryptedField", as: :record, inverse_of: :record, autosave: true, dependent: :destroy scope :"with_#{name}_encrypted_field", -> { includes("#{name}_encrypted_field": :data_encryption_key) } end
search_encrypted(name, opts = {})
click to toggle source
# File lib/action_encrypt/attribute.rb, line 8 def search_encrypted(name, opts = {}) blind_index :"#{name}", key: [Rails.application.credentials.blind_index_key].pack("H*") before_validation :"compute_#{name}_bidx" if opts[:unique] == true validates :"#{name}", uniqueness: true, allow_nil: true end end