module ActiveRecord::Encryption::EncryptedFixtures

Public Class Methods

new(fixture, model_class) click to toggle source
Calls superclass method
# File lib/active_record/encryption/encrypted_fixtures.rb, line 6
def initialize(fixture, model_class)
  @clean_values = {}
  encrypt_fixture_data(fixture, model_class)
  process_preserved_original_columns(fixture, model_class)
  super
end

Private Instance Methods

encrypt_fixture_data(fixture, model_class) click to toggle source
# File lib/active_record/encryption/encrypted_fixtures.rb, line 14
def encrypt_fixture_data(fixture, model_class)
  model_class&.encrypted_attributes&.each do |attribute_name|
    if clean_value = fixture[attribute_name.to_s]
      @clean_values[attribute_name.to_s] = clean_value

      type = model_class.type_for_attribute(attribute_name)
      encrypted_value = type.serialize(clean_value)
      fixture[attribute_name.to_s] = encrypted_value
    end
  end
end
process_preserved_original_columns(fixture, model_class) click to toggle source
# File lib/active_record/encryption/encrypted_fixtures.rb, line 26
def process_preserved_original_columns(fixture, model_class)
  model_class&.encrypted_attributes&.each do |attribute_name|
    if source_attribute_name = model_class.source_attribute_from_preserved_attribute(attribute_name)
      clean_value = @clean_values[source_attribute_name.to_s]
      type = model_class.type_for_attribute(attribute_name)
      encrypted_value = type.serialize(clean_value)
      fixture[attribute_name.to_s] = encrypted_value
    end
  end
end