Module: Anonymous::ActiveRecord

Defined in:
lib/anonymous/active_record.rb

Overview

This module handles anonymization for ActiveRecord models. In order to implement this module you must define a private #anonymization_definitions method in your model.

Retry Functionality: When the model update fails because of an ActiveRecord::RecordNotUnique exception the module will retry the update. This is in the event that the anonymization_definitions randomly produce values that violate a unique constraint in the database.

Instance Method Summary collapse

Instance Method Details

#anonymizeObject



27
28
29
30
31
32
33
34
35
36
37
# File 'lib/anonymous/active_record.rb', line 27

def anonymize
  anonymizer = Anonymizer.new(attributes, anonymization_definitions)
  update_attributes(anonymizer.anonymized_attributes)
rescue ::ActiveRecord::RecordNotUnique => e
  @anonymization_attempts ||= 0
  max_retries = Anonymous.configuration.max_anonymize_retries
  raise e if @anonymization_attempts >= max_retries

  @anonymization_attempts += 1
  retry
end

#anonymize!Object



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/anonymous/active_record.rb', line 15

def anonymize!
  anonymizer = Anonymizer.new(attributes, anonymization_definitions)
  update_attributes!(anonymizer.anonymized_attributes)
rescue ::ActiveRecord::RecordNotUnique => e
  @anonymization_attempts ||= 0
  max_retries = Anonymous.configuration.max_anonymize_retries
  raise e if @anonymization_attempts >= max_retries

  @anonymization_attempts += 1
  retry
end