Module: ConcernsOnRails::Models::Encryptable::ClassMethods

Includes:
Support::ColumnGuard
Defined in:
lib/concerns_on_rails/models/encryptable.rb

Instance Method Summary collapse

Methods included from Support::ColumnGuard

#ensure_columns!, #ensure_columns_on!, #schema_reachable?

Instance Method Details

#encryptable(*fields, type: :string, key: nil, blind_index: nil) ⇒ Object

Declare one or more encrypted fields. Repeatable; per-field options.



232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
# File 'lib/concerns_on_rails/models/encryptable.rb', line 232

def encryptable(*fields, type: :string, key: nil, blind_index: nil)
  type = type.to_sym
  encryptable_validate!(fields, type, blind_index)
  ensure_columns!(LABEL, *fields)

  fields.each do |field|
    field = field.to_sym
    encryptable_guard_auditable!(field)
    bi = encryptable_normalize_blind_index(field, blind_index)
    ensure_columns!(LABEL, bi[:column]) if bi
    self.encryptable_rules = encryptable_rules.merge(field => { type: type, key: key, blind_index: bi })
    attribute field, EncryptedType.new(type: type, key: key)
    encryptable_define_helpers(field)
    encryptable_define_blind_index(field, bi) if bi
    encryptable_register_filter_parameter(field)
  end
end